This question already has an answer here:
Garbage Value in File after write
(1个答案)
2年前关闭。
我试图在读取,写入和打开的帮助下将c中两个输入文件的内容复制到文件中。最初,我试图仅复制一个包含“ hello”世界的文件的内容,但这就是写入的内容:
“你好
h«Ú^?^ @ ^ @ ^ A ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ m G«Ú^?^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ Pjh«Ú^?^ @ ^ @ ^ A ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ A ^ @ ^ @ ^ @þ^?^ @ ^ @° h«Ú^?^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ H h«Ú^?^ @ ^ @ P)»Ó
”
我的代码是:
我不知道为什么会这样。
(1个答案)
2年前关闭。
我试图在读取,写入和打开的帮助下将c中两个输入文件的内容复制到文件中。最初,我试图仅复制一个包含“ hello”世界的文件的内容,但这就是写入的内容:
“你好
h«Ú^?^ @ ^ @ ^ A ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ m G«Ú^?^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ Pjh«Ú^?^ @ ^ @ ^ A ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ A ^ @ ^ @ ^ @þ^?^ @ ^ @° h«Ú^?^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ H 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;
}
}
我不知道为什么会这样。
最佳答案
您的输入文件可能少于128个字节。但是,您始终尝试将缓冲区中的所有128个字节写入输出文件。读取后的字节是未初始化的垃圾。
使用read
的返回值可以知道您实际获得了多少个字节。
关于c - 用open(),read()和write()写入错误的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46875414/