weixin_51425318 2021-03-15 14:16 采纳率: 40%
浏览 75
已采纳

C语言fscanf函数遇到与其对应数据类型不同时会发生什么?

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char ch,name[20];
    int a[5]={0},score,num;
    if((fp=fopen("C:\\Users\\wy207\\Desktop\\a.txt","r"))==NULL){
        printf("不能打开文件!\n");
        exit(0);
    }
    while(!feof(fp))
    {
    /*读出并显示文件当前行的内容*/
     if(fscanf(fp,"%d",&score)==-1) break;
     printf("%d\n",score);

     /*统计各等级人数*/
    if(score>=90)a[0]++;
    else if(score>=80)a[1]++;
    else if(score>=70)a[2]++;
    else if(score>=60)a[3]++;
    else a[4]++;
    }
    printf("\n");
    printf("A级有%d人\n",a[0]);
    printf("B级有%d人\n",a[1]);
    printf("C级有%d人\n",a[2]);
    printf("D级有%d人\n",a[3]);
    printf("E级有%d人\n",a[4]);
}

 

无限循环输出相同数字

展开全部

  • 写回答

1条回答 默认 最新

  • include_iostream_ 2021-03-15 14:20
    关注

    流的数据类型不匹配时可能发生流损坏。流损坏后就无法再读取内容了,除非重置流状态。由于流损坏后无法再读取内容,你的while里试图通过fscanf获取的变量就会一直处于原来的值。

    详见:man ferror

    (Linux上的手册页写得非常详细。在线版:https://linux.die.net/man/3/ferror

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部