我剛剛開始使用FILE I/O,我很困惑。下面的代碼中的while循環給出了一個奇怪的輸出。它打印i
從i = 1
開始,然後a[1] = ..
但在while循環之外,我已指定i = 0
。進入while循環後爲什麼i
遞增爲1的任何理由?令人困惑的是,最後的循環,正確地打印a[0] = 0
!文件輸入/輸出混淆
#include <stdio.h>
#include <stdlib.h>
#define N 11
int main()
{
FILE *fp;
int i, a[N];
fp = fopen("numbers.txt", "w");
for(i = 0; i < N; i++)
fprintf(fp,"%d\n",i);
fclose(fp);
fp = fopen("numbers.txt", "r");
i = 0;
while(!feof(fp))
{
printf("i = %d ",i);
fscanf(fp,"%d",&a[i]);
printf("a[%d] = %d\n",i,a[i]);
i++;
}
for(i = 0; i < N; i++)
printf("%d\n",a[i]);
return 0;
}
編輯:得到了上面的問題,現在澄清,另一種混亂。在讀取文件中的最後一個數字之後,feof(fp)不應該返回一個非零值,從而終止while循環嗎?爲什麼它會多執行一次循環?
[對我來說,實際上並沒有](http://dl.dropbox.com/u/4960980/Screen%20Shot%202013-02-21%20at%206.22.56%20PM.png)。數字從0開始。 – 2013-02-21 17:21:31
我在ubuntu 12.10上使用codeblocks(是的,我正在使用GCC)它從0開始,直到N = 9,但在那之後它給了我這個問題! – Nishad 2013-02-21 17:24:00
你能顯示輸出嗎?打印屏幕或複製粘貼它。 – fatrock92 2013-02-21 17:24:02