gpt4 book ai didi

c - 如何将流从一个文件修改为另一个文件

转载 作者:行者123 更新时间:2023-11-30 14:38:20 25 4
gpt4 key购买 nike

我需要编写一个程序,从一个文件中获取字符串数据,并将其中的每三个字符复制到另一个文件中。

我不确定我这样做是否正确。我的想法是首先创建一个数组,在其中存储 file1 中的原始数据,然后使用“for”循环修改数据并存储在第二个数组中:(例如 for(i=0; i < 数组大小; i+=3);问题是我不知道如何将输入传输到我的数组以及如何向后执行以将修改后的数据传输到 file2。

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define BUFFER_SIZE 50

int main(int argc, char *argv[]) {
char buffer[BUFFER_SIZE];
char modified[BUFFER_SIZE];
int input_fd, output_fd;
ssize_t ret_in, ret_out;
if(argc !=3 || strcmp(argv[1], "--help") == 0)
{
printf("Usage: %s file_origin file_destination\n", argv[0]);
return 2;
}
input_fd = open(argv[1], O_RDONLY);
if(input_fd == -1)
{
perror("There is no such file");
return 2;
}
out_fd = open(argv[2], O_RDWR | O_CREAT | O_TRUNC, 0644);
if(output_fd == -1)
{
perror("create");
return 3;
}

有人可以告诉我如何正确使用函数读/写将数据流式传输到数组以及如何以其他方式执行此操作。

最佳答案

欢迎来到 Stackoverflow!

鉴于您的作业的确切描述,我不会使用缓冲区;您可以简单地一次从输入文件中读取一个字节,并将每三个字节写入输出文件。这避免了任何缓冲区管理开销。

但是,如果您确实从输入文件读入缓冲区,则不需要以任何方式修改该缓冲区,也不需要第二个缓冲区。读取所有数据后,只需迭代输入缓冲区,将每三个字节输出到输出文件。

但是,如果您想要/需要以某种方式重用输出,您可以简单地以相同的方式从输入缓冲区填充第二个缓冲区(循环输入缓冲区,每次迭代跳过两个字节),然后写入第二个缓冲区到输出文件。 (这样,您在第二个缓冲区中仍然有相同的输出,并且可以以某种方式重用它。)

您采取的方法将决定要使用的最佳函数。我发现您已经了解 open()。阅读 read()write()close(),还要阅读 fopen() >、fgetc()fgets()fread()fwrite()fclose ()。通过阅读这些不同的函数、它们之间的相似之处、不同之处以及各自的优缺点,您可以学到很多东西。阅读它们将引导您了解其他相关的文件操作(例如查找、倒带等),这对您了解更多有关 C 和一般编程的知识很有帮助。

请注意,对于使用缓冲区的方法,您需要非常小心缓冲区的大小与输入文件的大小。这里有很多陷阱。如果这是某种类(class)的作业,那么这些考虑因素可能会出现在以后的类(class)/作业中,而且也许现在承担的任务太多了。但开始思考您所做的事情以及不知道您的程序需要处理的输入永远不会太早。

关于c - 如何将流从一个文件修改为另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56688318/

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