特定行我試圖讀取使用下面的代碼文件中的特定行。閱讀從文件
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