当涉及到文件去重工具时,可以使用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
数组中,并将其写入输出文件中。这样,输出文件将只包含唯一的行。希望这能满足你的需求!