C语言编程。我可以在文件中显示值吗

C语言编程。我可以在文件中显示值吗,c,file-io,data-structures,C,File Io,Data Structures,我在案例2中遇到了问题。我在文件中有值,但没有显示值,我想Value.txt中有一些整数。您可以将循环更改为以下内容以使其正常工作: case '2' : { FILE *fp = fopen("C:/project/Value.txt","r"); printf("\t\t\t\tDELETE\n"); printf("\t--------------------------------------

我在案例2中遇到了问题。我在文件中有值,但没有显示值,我想Value.txt中有一些整数。您可以将循环更改为以下内容以使其正常工作:

    case '2' :
        {
            FILE *fp = fopen("C:/project/Value.txt","r");
            printf("\t\t\t\tDELETE\n");
            printf("\t-------------------------------------------------------\n");
            printf("\t\tVALUE IS ");
            int i=0;
            while(feof(fp))
            {
                fscanf(fp,"%d",&value[i]);
                printf("%d ",value[i]);
                i++;
            }
            fclose(fp);
            break;
        }           

边读边了解原因!费奥夫错了,你错过了比赛!在feof

之前,您使用了whilefeoffp。最初,fp指向文件中的第一个字符,但不是EOF字符,因此feof返回0,循环停止,而不被输入。因此,在!feoffp在您的代码中,如果您是舒尔,则表明存在与您正在使用的单个数据类型相关的值。例如,在您的代码中,只有整数或字符等

while(fscanf(fp,"%d",&value[i])==1) //while fscanf is successful
    printf("%d ",value[i++]); //print and then increment i
但是,如果您有多个数据类型,并且只希望打印第一个整数,请使用

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

在这种情况下,当达到Eof时,fscanf返回0。

在执行任何读取操作之前,切勿使用feof。读过之后就用它。@BasileStarynkevitch你这么说很有趣。但是你看,feof的用法正是你所警告的。你们能证明这是为什么吗?这是不正确的,因为fscanf可以返回EOF,而循环将卡在无限循环中。当然它可以。文件和标准中都有这样的说明。你可以查一下。现在我已经编辑过了,代码看起来很好,但比较仍然不正确。如果设置了EOF,则feof返回非零。if语句中两个调用的顺序都应该颠倒,否则将打印一个额外的伪值。现在检查它的工作方式这是不正确的,因为fscanf可以返回EOF,而循环将卡在无限循环中。
      while((!feof(fp))&&(fscanf(fp,"%d",&value[i])))
      {
         printf("%d ",value[i]);
         i++;

      }