我想将file1内容复制到file2,但在写入命令file2仍然为空之后。write()不写入数据
int fd1;
int fd2;
size_t len;
size_t nbytes;
ssize_t bytes_read;
fd1 = open(file1, O_RDWR);
fd2 = open(file2, O_WRONLY | O_CREAT | O_TRUNC, 0644);
char *buf[len];
nbytes = sizeof(buf);
bytes_read = read(fd1, buf, nbytes);
write(fd2, &bytes_read, nbytes);
close(fd1);
close(fd2);
return 0;
这条线有什么不好吗?
char *buf[len];
我应该使用malloc还是memset?
_这里有什么不好的? char * buf [len]; _ yes,你需要一个字符串(一个字符数组),而不是指向字符的指针数组,更改为'char buf [len];',并且您正在使用未初始化的len。 –
'sizeof(buf)'是编译时,'buf'初始化不是。 – tilz0R
那么第一个len是未定义的。此外,通过使用char * buf [len],您可以创建一个“2D”数组[或者至少是一个数组上的指针] – kaldoran