Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从文件读取时打印非预期结果_C_Gcc - Fatal编程技术网

C 从文件读取时打印非预期结果

C 从文件读取时打印非预期结果,c,gcc,C,Gcc,我写了一个代码从文件“out”中读取整数 但当我运行这个程序时,它会给出这样的结果 13134518624-10740437841345139779220584 我的代码哪里有问题?您不是在打印更多的项目,而是在打印更大的未初始化值。从以下位置交换增量和打印语句: i++; printf("%d",a[i]); 致: 但您还需要检查fscanf函数的返回值,该函数返回成功读取/提取项目的值: if (fscanf(f1,"%d",&a[i]) == 1) {

我写了一个代码从文件“out”中读取整数

但当我运行这个程序时,它会给出这样的结果

13134518624-10740437841345139779220584

我的代码哪里有问题?

您不是在打印更多的项目,而是在打印更大的未初始化值。从以下位置交换增量和打印语句:

i++;
printf("%d",a[i]);
致:

但您还需要检查
fscanf
函数的返回值,该函数返回成功读取/提取项目的值:

if (fscanf(f1,"%d",&a[i]) == 1) {
            printf("%d\n",a[i]);
            i++;
}

这是因为只有失败的读取尝试才会设置eof标志,并且在尝试失败后以及打印虚假输出后,您正在检查eof。

您不是打印更多的项目,而是打印更大的未初始化值。从以下位置交换增量和打印语句:

i++;
printf("%d",a[i]);
fscanf(f1,"%d",&a[i]); //a is  array
    i++;
printf("%d",a[i]);
致:

但您还需要检查
fscanf
函数的返回值,该函数返回成功读取/提取项目的值:

if (fscanf(f1,"%d",&a[i]) == 1) {
            printf("%d\n",a[i]);
            i++;
}
这是因为只有失败的读取尝试才会设置eof标志,并且在尝试失败后以及打印虚假输出后,您正在检查eof

fscanf(f1,"%d",&a[i]); //a is  array
    i++;
printf("%d",a[i]);
你读了一个[i]并打印了一个[i+1]

while(!feof(f1))
{
   fscanf(f1,"%d",&a[i]);
   printf("%d",a[i++]);
}

你读了一个[i]并打印了一个[i+1]

你确定
fopen
成功了吗?@Joe Z是的,没有问题fopen@perreal在下面找到您的主要错误。第二个错误是未检查
fscanf
是否成功进行了转换。最后一行可能要打印两次。你确定
fopen
成功了吗?@Joe Z是的,没有问题fopen@perreal在下面找到您的主要错误。第二个错误是未检查
fscanf
是否成功进行了转换。最后一行可能打印两次。
while(!feof(f1))
{
   fscanf(f1,"%d",&a[i]);
   printf("%d",a[i++]);
}