#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);} 運行結(jié)果是fd=3,fd2=4fd3 = 100cur=012ok記過沒有什么問題,但是文件里出現(xiàn)了問題,貌似文件里的內(nèi)容不是12ok,還有亂碼現(xiàn)象文件里的內(nèi)容為:12okcur=%d讀取文件失敗;0????L0???p?????L????N????zR請高手指點,為什么文件里會有那寫亂碼問題???????而且那些亂碼還讀不出來???
2 回答

慕標(biāo)琳琳
TA貢獻(xiàn)1830條經(jīng)驗 獲得超9個贊
將write(100,"ok",fd3);改成write(100,"ok",2)即可,你這個是向文件中寫入100個字符,內(nèi)存中"OK" 后面的是隨機串,所以出現(xiàn)亂碼
- 2 回答
- 0 關(guān)注
- 763 瀏覽
添加回答
舉報
0/150
提交
取消