【发布时间】:2013-07-28 14:28:42
【问题描述】:
我一个月前刚开始学习 C,这是我为检测数据列表的峰值而编写的代码。当我在终端中执行“input data.txt”时,它以某种方式进入了无限循环,但是当我通过标准输入(即键盘)手动输入完全相同的数据时,它工作得非常好。任何想法为什么它会陷入无限循环?
谢谢!
int main(void)
{
int data1 = 0;
int data2 = 0;
int data3 = 0;
int counter = 1;
scanf("%d %d %d", &data1, &data2, &data3);
puts("Number Magnitude");
while (data3!= EOF){
if ((data1<=data2)&&(data2>data3)){
printf("%*d%*d\n", 4,counter,11, data2);
counter++;
}
data1 = data2;
data2 = data3;
scanf("%d", &data3);
}
return 0;
}
【问题讨论】:
-
在您不输入的情况下如何将输入输入到程序中?
-
欢迎来到 Stack Overflow。请尽快阅读About 页面。请注意,如果您运行
./input data.txt,您的程序仍在从键盘读取,而不是从文件读取。要从命名文件中读取,您需要使用int main(int argc, char **argv)然后打开文件。您可能应该尝试./input <data.txt,因为它将标准输入设置为命名数据文件。另一个建议(关于检查您的scanf()调用是否成功)也完全有效。 -
我在终端中使用“
-
如果你使用
<input data.txt,那么输入来自文件input,正在运行的程序是data.txt。你确定你说你在做什么? -
我刚查了一下,scanf返回data1、data2、data3为0,0,0,是不是说扫描不正常?
标签: c file-io infinite-loop