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

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 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测