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

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 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式