索尼与三星 2019-09-24 16:11 采纳率: 33.3%
浏览 1954

C语言read函数读入字节数问题

在linux环境下,使用open,read读取一个txt文件,出现了一些奇怪的地方。
1.文件是UTF-8编码 全英文,无中文 真实的文本文件是这样的:
图片说明

  1. 设置了一个char buf[20],fd是一个文件标示符。 3.已经得知sizeof(char)=1 sizeof(buf)=20

3.read(fd,buf,1);
结果显示:@

这里读入一个字节的话,为什么是这个东西?
4.read(fd,buf,2);
结果显示:bf
这里为什么又正常了?
5.read 3,4,5,6,7 个字节都是正常的
6.read(fd,buf,8);
再次错误:
图片说明
又乱码了
7.read(fd,buf,9);
结果是:
8.read(fd,buf,10);
正常
9.read(fd,buf,16);
再次错误:
图片说明
10.read(fd,buf,17);
还是乱码:
图片说明
11.read(fd,buf,18);
这次还是乱码,但是后面的g显示出来了。
图片说明
12.read(fd,buf,19);
还是乱码,但是后面的r显示出来了。
图片说明
13.read(fd,buf,20);
还是乱码,但是后面的e显示出来了。
图片说明

代码如下:
图片说明

图片说明

  • 写回答

2条回答 默认 最新

  • dabocaiqq 2019-09-24 16:44
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器