为了账号安全,请及时绑定邮箱和手机立即绑定

求高手帮助。。。。。。。dup问题

求高手帮助。。。。。。。dup问题

C++
一只萌萌小番薯 2018-11-11 13:17:14
#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <unistd.h>int main(){    int fd = open("a.txt",O_RDWR);    if(fd == -1)    {        perror("打开文件失败");        exit(-1);    }    int fd2 = dup(fd);    printf("fd=%d,fd2=%d\n",fd,fd2);        write(fd,"1",1);    write(fd2,"2",1);        int fd3 = dup2(fd,100);    printf("fd3 = %d\n",fd3);    write(100,"ok",fd3);        int cur = lseek(fd3,2,SEEK_SET);    printf("cur=%d\n",cur);        char ch[100] = {};    if(read(fd3,ch,sizeof(ch))<0)    {        perror("读取文件失败");    }    printf("%s\n",ch);} 运行结果是fd=3,fd2=4fd3 = 100cur=012ok记过没有什么问题,但是文件里出现了问题,貌似文件里的内容不是12ok,还有乱码现象文件里的内容为:12okcur=%d读取文件失败;0����L0���p�����L����N����zR请高手指点,为什么文件里会有那写乱码问题???????而且那些乱码还读不出来???
查看完整描述

2 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

将write(100,"ok",fd3);改成write(100,"ok",2)即可,你这个是向文件中写入100个字符,内存中"OK" 后面的是随机串,所以出现乱码


查看完整回答
反对 回复 2018-11-15
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

请考虑字符编码问题:

1,UNICODE 、MBCS

2,GB2312、UTF-8.....


查看完整回答
反对 回复 2018-11-15
  • 2 回答
  • 0 关注
  • 740 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信