大家好我正在尝试编写一个返回数据行并在String中返回的函数。下面是我的代码,我不知道为什么它不起作用。我添加了一个printf函数,当我调用该函数时,没有打印出来。?
编辑(因为我还不能回答) - 感谢您的回复。当我将char c更改为char * c时,它仍然无效。我只需要将该行读入一个字符串并返回它。
char* getLine(FILE *file, int lineNum){
char c;
int lineCount=0, size = 1;
char *line = NULL;
line = malloc(sizeof(char)*size);
while ((c=getc(file)) != EOF){
if (c=='\n'){
++lineCount;
continue;
}
if (lineCount==lineNum){
size += 1;
line = realloc(line, size*sizeof(char));
strcat(line, c);
printf("Line: %s\n", line);
}
}
return line;
}
答案 0 :(得分:5)
变量c
不属于const char *
类型
见strcat documentation
答案 1 :(得分:0)
效率不高,但它应该做你想做的事情:
请注意,lineCount从0开始。(第一行是第0行)。
char* getLine(FILE *file, int lineNum){
char c;
int lineCount=0, size = 0; // start size at zero, not one
char *line = NULL;
while ((c=getc(file)) != EOF){
if (lineCount==lineNum){
size += 1;
if(line == NULL) {
line = calloc(sizeof(char), size);
} else {
line = realloc(line, size*sizeof(char));
}
char ac[2] = { c, 0 }; // this line is new
strcat(line, ac); // ac is new here
printf("Line: %s\n", line);
if(c == '\n') {
return line;
}
}
if (c=='\n'){
++lineCount;
}
}
printf("Could not find line %d\n", lineNum);
return NULL;
}