只复制file1.txt的一部分内容到file2.txt

标签 c file

我必须创建一个程序,将 file1.txt 的内容复制到 file2.txt,但它不会只是“复制粘贴”file1.txtfile2.txt

例如,file1.txt 包含:

Name: Katrina , Age: 19 , Hobbies: Coding
Name: Karl, Age: 21, Hobbies: Guitar

file2.txt 将复制 file1.txt 的内容,但仅限于 Age。所以 file2.txt 将包含:

Name: Katrina, Age: 19
Name: Karl, Age: 21

起初,我的思路是:

  1. ", Hobbies"放入字符串

  2. 统计file1.txt中的字符数,直到读到", Hobbies"(计数器)

  3. 计数器将每个字符复制 file1.txt 字符,计数次数。


这是我的代码:

FILE *ptr1;
FILE *ptr2;
        char c[100];
        int count = 1;
        char end[100];
        char k;

        strcpy(end, ", Hobbies");

        ptr1= fopen("file1.txt", "r");
        ptr2 = fopen("file2.txt", "a");


        while((k = fgetc(ptr1) != end)
        {
            if (k == ' ')
                count++;
        }

还有其他想法吗?谢谢。

最佳答案

strtok 使用定界符将字符串分成一系列标记。这里可以使用“,”作为分隔符

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

int main()
{
        FILE *fp1;
        FILE *fp2;

        char line[100];
        char *token;
        const char s[2] = ",";

        fp1 = fopen("file1.txt", "r");
        fp2 = fopen("file2.txt", "a");

        while (fgets(line, sizeof(line), fp1))
        {
                token = strtok(line,s);
                fprintf(fp2,"%s",token);
                token = strtok(NULL, s);
                fprintf(fp2,"%s\n",token);
        }
        fclose(fp1);
        fclose(fp2);
        return 0;
}

关于只复制file1.txt的一部分内容到file2.txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40732902/

相关文章:

c++ - 从 MS 访问调用 dll 函数

c - 为什么需要强制转换为 void**(例如在 cudaMalloc 调用中)?

android - 如何在 NDK 中打印/记录变量的地址

c - 在C中逐 block 读取文件

c - C语言读写二进制文件

在C中从长整型转换为十六进制?

c - 如何将 const 数组或变量数组传递给 C 中的函数?

android - 如何减小图像文件的大小

python - 两个文件在行方面的区别

python - Python 中文件创建时间和当前时间不匹配