2012-04-19 32 views
1

我試圖從文本文件中打印一行,然後轉到下一行並打印,直到沒有更多的行可以打印。這是我到目前爲止,但它只在我第一次運行該程序。試圖在c中打印一行文本文件

void ReadFile(FILE *a) 
{ 
    char line[23]; 
    while(fgets(line, 22, a) != NULL) 
    { 
     printf("%s", line); 
    } 
} 
+0

你是否正確關閉了流? - > fclose(fp); – SanBen 2012-04-19 12:19:22

+0

R34lthing,是的,我正在關閉該文件在主循環結束時調用此函數 – CRS 2012-04-19 13:01:55

回答

7

,如果你想這個多次與同FILE對象做你需要將文件指針重新回到起點:

void ReadFile(FILE *a) 
{ 
    char line[23]; 
    rewind(a); 
    while(fgets(line, 22, a) != NULL) 
    { 
     printf("%s\n", line); // Added new line 
    } 
} 

Reference

1

你不是rewind(a)這個文件,所以函數的每一次迭代都從最後一個fgets離開它的地方開始(在你的情況下是EOF)。