为什么从from文件只读取了开头的一个T啊,from文件第一行T后面并不是文件尾啊 后面不是还有字符吗
刚刚调试了一下,从from读取的文件是没有问题的,是整个from文件里的字符,但为什么写到to文件里面的只有一个开头的一个T啊,试了好几种写入方式也不行😭
这是from文件

这是to文件 第一行是to文件的原始内容 第二行是从from文件读取的T

这是读取文件的程序代码

为什么从from文件只读取了开头的一个T啊,from文件第一行T后面并不是文件尾啊 后面不是还有字符吗
刚刚调试了一下,从from读取的文件是没有问题的,是整个from文件里的字符,但为什么写到to文件里面的只有一个开头的一个T啊,试了好几种写入方式也不行😭
这是from文件

这是to文件 第一行是to文件的原始内容 第二行是从from文件读取的T

这是读取文件的程序代码

关注引自免费微信小程序:皆我百晓生
在您提供的代码片段中,存在一些可能导致问题的地方。首先,让我们分析一下代码并进行相应的修改。
您的代码有以下几个问题:
O_RDONLY和O_WRONLY。下面是修复这些问题后的代码:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
void err_exit(const char* message) {
perror(message);
exit(1);
}
int main(int argc, char** argv) {
int n, from, to;
char buf[1024];
if (argc != 3) {
printf("Usage: %s from-file to-file\n", argv[0]);
exit(1);
}
// Open 'from' file in read-only mode
if ((from = open(argv[1], O_RDONLY)) < 0) {
err_exit(argv[1]);
}
// Open 'to' file in write-only and create-if-not-exists mode with appropriate permissions
if ((to = open(argv[2], O_WRONLY | O_CREAT | O_APPEND, 0644)) < 0) {
err_exit(argv[2]);
}
while ((n = read(from, buf, sizeof(buf))) > 0) {
write(to, buf, n);
}
// Check for read error
if (n == -1) {
perror("Error reading from file");
exit(1);
}
close(from);
close(to);
return 0;
}
确保您的源代码文件名为copy_file.c,然后编译它:
gcc copy_file.c -o copy_file
接下来,运行新编译的程序:
./copy_file from.txt to.txt
这样应该可以正确地从from.txt复制所有内容到to.txt,包括每一行的内容。如果仍然存在问题,请提供详细的错误信息以便进一步排查。