2013-03-14 58 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