【发布时间】:2017-10-22 14:46:55
【问题描述】:
我试图在读取、写入和打开的帮助下将 c 中两个输入文件的内容复制到一个文件中。起初我试图简单地复制一个包含“你好”世界的文件的内容,但这是写的: “你好 h«Ú^?^@^@^A^@^@^@^@^@^@^@m G«Ú^?^@^@^@^@^@^@^@^@^@^ @^Pjh«Ú^?^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^ @þ^?^@^@°h«Ú^?^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^ @^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^ @^Hh«Ú^?^@^@P)»Ó " 我的代码是:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc , char *argv[]){
int fd1,fd2,fdout;
int fread1, fread2;
char buff[128];
int fconf(int f1, int f3){
fd1 = open(argv[1],O_RDONLY);
fdout = open(argv[2],O_RDONLY | O_CREAT | O_APPEND | O_RDWR);
fread1 = read(fd1,buff,sizeof(buff));
write(fdout,buff,sizeof(buff));
close(fd1);
close(fdout);
return 0;
}
}
我不知道为什么会这样。
【问题讨论】:
-
你传递
sizeof buff作为你想用write写入的字节数。那总是 128。read返回实际读取的字节数。此外,检查错误是一个非常好的主意,您可以在相应函数的文档中找到如何执行此操作。 -
'fread1 = read(fd1,buff,sizeof(buff));'.. 那么你忽略'fread1'的值:(
-
man read: '成功时,返回读取的字节数'
-
为什么要将
O_RDONLY和O_RDWR都传递给第二个open?
标签: c