使用open(),read()和write()

时间:2017-10-22 14:46:55

标签: c

我试图在读取,写入和打开的帮助下将c中两个输入文件的内容复制到文件中。起初我试图简单地复制包含'hello'世界的一个文件的内容,但这是写的: “你好 h ^Ú^?^ @ ^ @ ^ A ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ m G«Ú^?^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ PJH«Ú^?^ @ ^ @ ^ A ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ A ^ @ ^ @ ^ ?@þ^^ @ ^ @°< 91> H«Ú^^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ H< 95 GT; H«?Ú^^ @ ^ @ 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;
 }
}

我不知道为什么会这样。

1 个答案:

答案 0 :(得分:0)

可能您的输入文件包含少于128个字节。但是您总是尝试将缓冲区中的所有128个字节写入输出文件。读取后的字节是未初始化的垃圾。

使用read的返回值来了解您实际获得的字节数。