我试图在读取,写入和打开的帮助下将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;
}
}
我不知道为什么会这样。
答案 0 :(得分:0)
可能您的输入文件包含少于128个字节。但是您总是尝试将缓冲区中的所有128个字节写入输出文件。读取后的字节是未初始化的垃圾。
使用read
的返回值来了解您实际获得的字节数。