我需要做什么来读取一个文件,然后选择一行并将其写入另一个文件(使用C)?

v09wglhw  于 2022-12-22  发布在  其他
关注(0)|答案(1)|浏览(106)

我一直在尝试找出我会,读取一个.txt文件,并从随机选择一行说,然后将结果写入一个不同的.txt文件,例如:.txt bark run car取第2行和第3行,将它们加在一起,并将其写入Result.txt的新行中。我将如何着手做这件事?
我试着寻找fopen()、fgets()、fgetc()、fprintf()、puts()的相关资源,但到目前为止还没有找到任何关于阅读非第一行的资源,我的最佳猜测是:- 读取文件-打印存储器中的文件行,即数组-从随机数中选取一个数字,即rand()-使用随机数选取数组位置-将数组单元写入新文件-重复两次-换行重复任务4-6 -完成后-关闭读取文件-关闭写入文件
可能是想太多了,或者只是不知道在文件的任何地方得到一行的操作是什么。只是很难把我的头绕过去。

92dk7w1h

92dk7w1h1#

我不打算解决整个练习,但我会给你一个提示,如何从一个文件复制一行到另一个文件。你可以使用fgets,并增加一个计数器,每次你发现一个换行符,如果行号是你想复制的,你只需转储缓冲区的fgets获得到目标文件的fputs

#include <stdio.h>
#include <string.h>

int main(void)
{
    // I omit the fopen check for brevity
    FILE *in = fopen("demo.c", "r");
    FILE *out = fopen("out.txt", "w");

    int ln = 1, at = 4; // copy line 4
    char str[128];

    while (fgets(str, sizeof str, in))
    {
        if (ln == at)
        {
            fputs(str, out);
        }
        if (strchr(str, '\n') && (ln++ == at))
        {
            break;
        }
    }
    fclose(in);
    fclose(out);
    return 0;
}

输出:

int main(void)

相关问题