2014-10-30 57 views
0

在我今天的课上,我们分配了一个项目,其中涉及使用./a.out“<”文件名命令读取文件。该文件的内容是这样的C使用./a.out <文件名以及如何停止读取来读取文件

16915 46.25 32 32 
10492 34.05 56 52 
10027 98.53 94 44 
13926 32.94 19 65 
15736 87.67 5 1 
16429 31.00 58 25 
15123 49.93 65 38 
19802 37.89 10 20 
-1 

但更大

我的问题是,以后使用的任何scanf函数完全被忽略,当打印出来,而不是采取在用户输入什么样子的垃圾只是扫描。在我的实际程序中,这导致需要输入的菜单出现问题。

如何让程序停止读取./a.out“<”文件名命令提供的文件? 我也停在-1搜索,而不是EOF不具有一组额外的阵列数据的缘故开始-1我真正的程序 前

-1 0 0 0 

每班人数为常数是可调用于计算类平均数,我宁愿没有一组0的数据倾斜。

#include <stdio.h> 

int main(void) 
{ 
     int i = 0,j = 1,d,euid[200],num; 
     int tester = 0; 
     float hw[200],ex1[200],ex2[200]; 
     while(j) 
     { 
       scanf("%d",&tester); 
       if(tester == -1) 
       { 
         j = 0; 
       } 
       else 
       { 
         euid[i] = tester; 
       } 
       scanf("%f",hw+i); 
       scanf("%f",ex1+i); 
       scanf("%f",ex2+i); 
       i++; 
     } 
     for(d = 0;d < 50;d++) /*50 because the actual file size contains much more than example*/ 
     { 
       printf("euid = %d\n",euid[d]); 
       printf("hw = %f\n",hw[d]); 
       printf("ex1 = %f\n",ex1[d]); 
       printf("ex2 = %f\n",ex2[d]); 
     } 
     printf("input something user\n"); 
     scanf("%d",&num); 
     printf("This is what is being printed out -> %d\n",num); 
return 0; 
} 

回答

0

我有完全相同的问题。尝试了每种可以找到缓冲区中剩余输入的方法,但它永远不会结束。

得到它使用fopen和fscanf工作,但教授。说他更喜欢使用a.out代码<文件名

+0

不知道我们在同一所学校的机会是什么?无论如何,我发邮件给我的教授,我不认为这是可能的使用该命令。当我得到回复时,我会让你知道他告诉我什么。 – Yosvan10 2014-11-02 03:31:34

0

原来这实际上是不可能的。