gpt4 book ai didi

c - 使用 open()、read() 和 write() 写入坏数据

转载 作者:行者123 更新时间:2023-11-30 21:27:56 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com