C语言文件去重

当涉及到文件去重工具时,可以使用C语言编写一个简单而有效的程序。下面是一个基本的示例,代码如下:

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

#define MAX_LINE_LENGTH 256

int main() {
    char inputFileName[MAX_LINE_LENGTH];    // 输入文件名
    char outputFileName[MAX_LINE_LENGTH];   // 输出文件名
    FILE *inputFile, *outputFile;           // 输入文件和输出文件指针
    char line[MAX_LINE_LENGTH];             // 存储每行内容的缓冲区
    char uniqueLines[MAX_LINE_LENGTH][MAX_LINE_LENGTH];  // 存储唯一行的数组
    int uniqueLinesCount = 0;                // 唯一行的计数器

    printf("请输入输入文件名:");
    scanf("%s", inputFileName);

    printf("请输入输出文件名:");
    scanf("%s", outputFileName);

    // 打开输入文件
    inputFile = fopen(inputFileName, "r");
    if (inputFile == NULL) {
        printf("无法打开输入文件。\n");
        return 1;
    }

    // 创建输出文件
    outputFile = fopen(outputFileName, "w");
    if (outputFile == NULL) {
        printf("无法创建输出文件。\n");
        fclose(inputFile);
        return 1;
    }

    // 逐行读取输入文件
    while (fgets(line, MAX_LINE_LENGTH, inputFile) != NULL) {
        int lineExists = 0;

        // 检查当前行是否已经存在于之前读取的行中
        for (int i = 0; i < uniqueLinesCount; i++) {
            if (strcmp(line, uniqueLines[i]) == 0) {
                lineExists = 1;
                break;
            }
        }

        // 如果当前行是唯一的,则将其添加到 uniqueLines 数组中,并写入输出文件
        if (!lineExists) {
            strcpy(uniqueLines[uniqueLinesCount], line);
            uniqueLinesCount++;
            fprintf(outputFile, "%s", line);
        }
    }

    // 关闭文件
    fclose(inputFile);
    fclose(outputFile);

    printf("文件去重完成。\n");

    return 0;
}

这个程序能够根据用户提供的输入文件名和输出文件名,打开输入文件并逐行读取内容。对于每一行,它检查该行是否已经存在于之前读取的行中。如果不存在,它将将该行添加到 uniqueLines 数组中,并将其写入输出文件中。这样,输出文件将只包含唯一的行。希望这能满足你的需求!

© 版权声明
THE END
喜欢就支持一下吧!
点赞280 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容