51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

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 &lt; 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 数组中,并将其写入输出文件中。这样,输出文件将只包含唯一的行。希望这能满足你的需求!

赞(0)
未经允许不得转载:工具盒子 » C语言文件去重