C语言合并目录下的所有csv文件到一个csv文件中,合并后把原文件删除
时间: 2024-04-12 20:31:25 浏览: 187
homework.zip
要合并目录下的所有 CSV 文件到一个 CSV 文件中,并在合并后将原文件删除,你可以使用 C 语言的文件操作函数和 CSV 文件解析库。
下面是一个示例代码,演示了如何实现这个功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
#define MAX_FILENAME_LENGTH 256
// 函数声明
void mergeCSVFiles(const char* dirPath, const char* mergedFilePath);
void deleteCSVFiles(const char* dirPath);
int main() {
const char* directoryPath = "/path/to/csv/files/directory";
const char* mergedFilePath = "/path/to/merged/file.csv";
mergeCSVFiles(directoryPath, mergedFilePath);
deleteCSVFiles(directoryPath);
return 0;
}
// 合并目录下的所有 CSV 文件到一个文件中
void mergeCSVFiles(const char* dirPath, const char* mergedFilePath) {
DIR *dir;
struct dirent *entry;
FILE *mergedFile = fopen(mergedFilePath, "w");
if (mergedFile == NULL) {
printf("无法打开合并后的文件。\n");
return;
}
// 打开目录
dir = opendir(dirPath);
if (dir == NULL) {
printf("无法打开目录。\n");
fclose(mergedFile);
return;
}
// 遍历目录中的文件
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_REG) { // 如果是普通文件
char filePath[MAX_FILENAME_LENGTH];
strcpy(filePath, dirPath);
strcat(filePath, "/");
strcat(filePath, entry->d_name);
if (strstr(entry->d_name, ".csv") != NULL) { // 如果是 CSV 文件
FILE *csvFile = fopen(filePath, "r");
if (csvFile != NULL) {
char line[MAX_FILENAME_LENGTH];
// 逐行读取 CSV 文件内容并写入合并文件中
while (fgets(line, sizeof(line), csvFile) != NULL) {
fputs(line, mergedFile);
}
fclose(csvFile);
}
}
}
}
closedir(dir);
fclose(mergedFile);
}
// 删除目录下的所有 CSV 文件
void deleteCSVFiles(const char* dirPath) {
DIR *dir;
struct dirent *entry;
// 打开目录
dir = opendir(dirPath);
if (dir == NULL) {
printf("无法打开目录。\n");
return;
}
// 遍历目录中的文件
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_REG) { // 如果是普通文件
char filePath[MAX_FILENAME_LENGTH];
strcpy(filePath, dirPath);
strcat(filePath, "/");
strcat(filePath, entry->d_name);
if (strstr(entry->d_name, ".csv") != NULL) { // 如果是 CSV 文件
remove(filePath); // 删除文件
}
}
}
closedir(dir);
}
```
请将代码中的 `/path/to/csv/files/directory` 替换为你实际的 CSV 文件所在的目录路径,将 `/path/to/merged/file.csv` 替换为你希望生成的合并后的 CSV 文件的路径。
这段代码使用了 `<dirent.h>` 头文件中的函数来遍历目录中的文件,并使用标准 C 文件操作函数来读取和写入 CSV 文件内容。函数 `mergeCSVFiles` 用于合并目录下的所有 CSV 文件到一个文件中,函数 `deleteCSVFiles` 用于删除目录下的所有 CSV 文件。
确保在使用这段代码之前,你已经安装了 C 语言的编译环境,并包含了相应的头文件和库。编译时需要链接适当的库文件,如 `gcc -o merge_csv merge_csv.c`,然后运行可执行文件 `./merge_csv`。
阅读全文