Hudogeee 2023-02-11 00:57 采纳率: 16.7%
浏览 43
已结题

C语言 -- fgets函数读取中文字符问题

C语言 -- 在使用fgets函数的时候如果读取了中文字会继续读取下一行的资料

在写程序的时候发面,如果在txt档案里存在中文字符的话fegts函数会自己读取了下一行的字
这是代码部分

   FILE *fp;
    int i = -1;
    char chessBoard[24][50];
    char temp[50];
    char pao[5] = "炮.";

    fp = fopen("ChessBoard\\basic1.txt", "r");

    while (i < 24)
    {
        i++;
        fgets(chessBoard[i], 52, fp);
    }

img


这是txt档案里面的内容

img


这是有中文字符的读取结果,第12行那里他自己读取了一遍下一行的文字

img


这是换成英文字符的读取结果,完全没有任何问题

  • 写回答

2条回答 默认 最新

  • ksgpjhqf 2023-02-11 12:59
    关注

    这不是读取了下一行,这是汉字所在行没有终止符'\0',而二维数组本质是一维的,所以输出汉字所在行时把下一行也输出了。
    应该是因为每行的宽度不够,把chessboard[24][50]改成chessboard[24][54]应该就可以了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月19日
  • 已采纳回答 2月11日
  • 创建了问题 2月11日

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?