首页新闻找找看学习计划

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

0
悬赏园豆:30 [已解决问题] 解决于 2012-09-18 13:55

#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=4
fd3 = 100
cur=0
12ok
记过没有什么问题,但是文件里出现了问题,貌似文件里的内容不是12ok,还有乱码现象

文件里的内容为:

12okcur=%d
读取文件失败;0����L0���p�����L����N����zR

请高手指点,为什么文件里会有那写乱码问题???????而且那些乱码还读不出来???

sjzLovecj的主页 sjzLovecj | 初学一级 | 园豆:164
提问于:2012-09-17 18:47
< >
分享
最佳答案
1

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

收获园豆:20
星空雾雨 | 菜鸟二级 |园豆:311 | 2012-09-18 13:21

应该是这个问题,谢谢。。。。。。。

sjzLovecj | 园豆:164 (初学一级) | 2012-09-18 13:56
其他回答(2)
0

请考虑字符编码问题:

1,UNICODE 、MBCS

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

收获园豆:5
Launcher | 园豆:45040 (高人七级) | 2012-09-18 09:31

这个答案不是我想要的,同样谢谢你。。。。。。。

支持(0) 反对(0) sjzLovecj | 园豆:164 (初学一级) | 2012-09-18 13:56
0

我运行的时候没有乱码,a.txt文件里没有乱码,但是我不明白的是向文件里写的数据会是这样的,我截图了

你看看吧 我不明白啊

收获园豆:5
励志 | 园豆:220 (菜鸟二级) | 2012-09-18 13:24

慢慢研究,一定会弄明白的

支持(0) 反对(0) sjzLovecj | 园豆:164 (初学一级) | 2012-09-18 13:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册