2013-03-14 107 views
0

下面的代碼可能會出錯,它永遠不會打開文件。我也嘗試過使用絕對文件路徑,但這並沒有幫助我,我知道文件在那裏。從C中的文本文件讀取空格分隔的浮點值C

FILE *myfile; 


    myfile= fopen("IN.txt",r); 
    if (myfile != NULL) 
    { 
     while (fscanf(myfile,"%lf",&test) !=eof) 
     { 
      printf("%f",test); 
      printf("\n"); 
     } 
    } 
    fclose(myfile); 
+3

EOF應該是EOF – 2013-03-14 07:17:45

回答

0
myfile= fopen("IN.txt",r); 

schould是

myfile = fopen("IN.txt","r"); 

,並確保你的文件系統是情況()敏感作爲你的文件名建議(所以「IN.txt」在UN * X不同文件中爲「in.txt」)

3

也許你想這樣做:

myfile= fopen("IN.txt","r"); 

這是因爲第二個參數是爲const char *類型的

在這裏:

while (fscanf(myfile,"%lf",&test) !=EOF) 

(C區分大小寫)。

編輯: 我想建議使用類似:

while ((fscanf(myfile, "%lf", &test)) > 0){...} 
+1

我想建議使用類似: 而((的fscanf(MYFILE, 「%LF」,與測試))> 0){...} – none 2013-03-14 07:19:19

+0

+1好建議歡迎來到SO!點擊「編輯」即可添加到答案中。 – 2013-03-14 07:26:48

+0

我不敢相信,我正在使用集成了代碼塊的Gnu C編譯器。編譯器/鏈接器不是應該提醒我的。因此,程序結果我所做的是完全錯誤的,程序中沒有任何地方聲明「r」,但它仍然編譯,很奇怪! – 2013-03-14 07:32:24

1

試試打印錯誤使用

printf(「Error opening file:%s \ n」,strerror(errno));

+1

你也可以使用'perror(「Error opening file」);' – 2013-03-14 07:27:59