我使用C中的freopen()函数从文件Data.txt读取数据,并将相同的数据写入输出文件Output.txt .This,这是我编写的代码。
#include<stdio.h>
#include<conio.h>
int main(void)
{
int i,diff,number_of_inputs,num1,num2;
freopen("Data.txt","r",stdin);
freopen("Output.txt","w",stdout);
scanf("%d",&number_of_inputs);
for(i=0;i<number_of_inputs;i++)
{
scanf("%d %d",&num1,&num2);
printf("%d %d",num1,num2);
}
fclose(stdin);
fclose(stdout);
getch();
return 0;
}Data.txt文件包含:
3.
10 12
10 14
100 200
但是输出文件包含大量的垃圾数字,给人一个无限loop.Can的印象,有人告诉我出了什么问题?
发布于 2011-04-11 09:26:28
您需要通过调试器运行代码。我认为这样的问题可能是显而易见的。
尽管如此,您可以对任何库调用执行没有错误检查。如果其中任何一个失败,您的变量中只会有垃圾值。
发布于 2011-04-11 09:25:39
您的代码需要检查来自freopen()和scanf()的返回值。
从这两个函数中的任何一个得到一个意想不到的返回值将为您提供错误所在的线索。
freopen()返回NULL以指示错误。
scanf()返回已转换的项目数,即EOF。
在这两种情况下,您的代码都可以检查errno的值,以找出导致错误的原因。您可能希望使用perror()打印它。
发布于 2011-04-11 09:23:20
除了缺少换行符之外,这在我的机器上似乎运行得很好--输出是10 1210 14100 200,当适当地换行时,它会给出
10 12
10 14
100 200。
而且,getch()是一个奇怪的选择,因为您刚刚在stdin上调用了fclose()
https://stackoverflow.com/questions/5619110
复制相似问题