在我今天的班级中,我们被分配了一个项目,该项目涉及使用./a.out"<" filename命令读取文件。该文件的内容如下所示
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"<"filename命令提供的文件? 我也停止搜索-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 :(得分:0)
我有完全相同的问题。尝试了我能找到的每个方法来吃缓冲区中的剩余输入,但它永远不会结束。
使用fopen和fscanf工作,但教授。他说他更喜欢使用a.out&lt;文件名
答案 1 :(得分:0)
事实证明这实际上是不可能的。