我试图从名为part_1.txt
的文件中读取数字,该文件包含以下数据:
101
102
103
104
105
106
107
108
109
这是我正在使用的代码:
#include <stdio.h>
int main()
{
FILE *handle_in1 = fopen("part_1.txt", "r");
FILE *handle_in2 = fopen("part_2.txt", "r");
FILE *handle_out = fopen("parts.txt", "w");
int scan;
if(handle_in1 == NULL || handle_in2 == NULL)
{
printf("File(s) could not be handled.");
}
else
{
while(fscanf(handle_in1, "%d", &scan) != EOF)
{
fscanf(handle_in1, "%d", &scan);
printf("Number is %d\n", scan);
}
}
return 0;
}
代码应该在屏幕上打印出文件中存储的每个值,直到文件结束。
相反,它会每隔一个值(和最后一个值)打印一次,如下所示:
Number is 102
Number is 104
Number is 106
Number is 108
Number is 109
这个密码有什么问题?
我编辑了这个问题,因为我要到8小时才能回复以下版本是新版本:
#include <stdio.h>
int main()
{
FILE *handle_in1 = fopen("part_1.txt", "r");
FILE *handle_in2 = fopen("part_2.txt", "r");
FILE *handle_out = fopen("parts.txt", "w");
int scan;
if(handle_in1 == NULL || handle_in2 == NULL)
{
printf("File(s) could not be handled.");
}
else
{
fscanf(handle_in1, "%d", &scan);
while(fscanf(handle_in1, "%d", &scan) != EOF)
{
printf("Number is %d\n", scan);
}
}
return 0;
}
这个程序的编辑版本给出了值:102、103、104、105、106、107、108和109。如果我编辑txt文件并在txt文件的顶部多放一个101,那么它会给出从101到109的所有值,因此它必须跳过第一个数字。为什么我不知道。。。
最佳答案
你在这里做错了什么:
while(fscanf(handle_in1, "%d", &scan) != EOF)
{
fscanf(handle_in1, "%d", &scan);
printf("Number is %d\n", scan);
}
解决办法是:
在循环的迭代中只使用一个
scanf
。所以它将变成(这是一个解决方案):
while(fscanf(handle_in1, "%d", &scan) != EOF)
{
printf("Number is %d\n", scan);
}
关于c - fscanf返回每隔一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23679426/