特定行我试图读取使用下面的代码文件中的特定行。阅读从文件
char *getlinenum(char *filename, int lnum)
{
FILE *f;
int i;
char *linebuf = NULL, *tmp = NULL;
if ((f = fopen(filename, "r")) != NULL)
{
linebuf = (char *)malloc(2048);
memset(linebuf, 0, 2048);
for (i = 0; i < lnum; i++)
{
if (fscanf(f, "%[^\n]\n", linebuf) == EOF)
{
free(linebuf);
fclose(f);
printf("Returning NULL\n");
return NULL;
}
}
//tmp = strdup(linebuf);
//free(linebuf);
fclose(f);
return linebuf;
}
return NULL;
}
不管如何,它始终只返回一个空(零)的字符串。你看到的任何问题?这里是测试文件:
/home/mainframe/b
/home/mainframe/dead.letter
/home/mainframe/.bash_history
/home/mainframe/a
/home/mainframe/f
/home/mainframe/e
/home/mainframe/c
/home/mainframe/g
/home/mainframe/.ssh/authorized_keys
/home/mainframe/.ssh
/home/mainframe/d
我真的不明白它可能以零字符串(而不是空指针)结束。
的作品对我来说太。如果你传递一个消极的行号可能以零字符串结束(或0) – kaman
是啊,这个问题最终是一个简单的将其更改为<=,而不是仅仅<......想通了这一点只是一秒钟前。将提出一个编辑。 – phyrrus9