【发布时间】:2021-12-31 14:06:03
【问题描述】:
我想在 C++ 中测试 fopen 和 fclose 的示例,其中代码读取文件中的整数值,但如果文件为空(无整数),则检索到的值不是 0,而是 -858993460。我认为这是fscanf() 中变量的地址,但我怎么能得到null 或/0 的值
以下代码有问题
#include <stdio.h>
int main()
{
{
int a, sum = 0 ,num, n = 0;
FILE* pFile;
pFile = fopen("input.txt", "r");
fscanf(pFile, "%d", &num);
while (n != 5) {
n = n + 1;
sum = sum + num;
fscanf(pFile, "%d", &num);
}
fclose(pFile);
printf("I have read: %d numbers and sum is %d \n", n, sum);
scanf("Hi %d", &a);
return 0;
}
}
input.txt:(空)或:
12 32 43 56 78
注意:代码是有问题的,因为num 永远不会被读取为0,所以循环继续进行。
我将添加有关该问题的更多详细信息:如果输入文件包含五个整数:
12 32 43 56 78
代码如下:
#include <stdio.h>
int main()
{
{
char str[80];
int a, sum = 0 ,num, n = 0;
FILE* pFile;
pFile = fopen("input.txt", "r");
fscanf(pFile, "%d", &num);
while (n != 5) {
n = n + 1;
sum = sum + num;
fscanf(pFile, "%d", &num);
}
fclose(pFile);
printf("I have read: %d numbers and sum is %d \n", n, sum);
scanf("Hi %d", &a);
return 0;
}
}
输出:
I have read: 5 numbers and sum is 221
【问题讨论】:
-
如果您使用的是
C++,请不要标记C。 -
-858993460=0xFFFF FFFF CCCC CCCC,我猜这不是地址。 -
如果您不向我们展示您的代码,则无法判断它可能有什么问题。
-
将您的代码添加到您的问题中,我们或许可以提供帮助。
-
显示的代码非常精神分裂。它
#includes 是一个 C++ 头文件,然后继续使用其中的任何内容,而是使用 C 的stdio.h,甚至不包括在内。