我试图创建一个程序来读取目录中的所有.txt
个文件。它使用file->d_name
获取每个文件的名称,但现在我需要打开文件才能使用它们。
#include <dirent.h>
#include <stdlib.h>
#include <stdio.h>
int main (int argc, char *argv[]) {
DIR *directory;
struct dirent* file;
FILE *a;
char ch;
if (argc != 2) {
printf("Error\n", argv[0]);
exit(1);
}
directory = opendir(argv[1]);
if (directory == NULL) {
printf("Error\n");
exit(2);
}
while ((file=readdir(directory)) != NULL) {
printf("%s\n", file->d_name);
// And now????
}
closedir(directory);
}
答案 0 :(得分:1)
您写道:
while ((file=readdir(directory)) != NULL) { printf("%s\n",file->d_name); //And now???? }
检查目录条目是文件还是目录。如果它不是常规文件,请转到下一个目录条目。
if ( file->d_type != DT_REG )
{
continue;
}
我们有档案。通过组合目录名和目录条目中的文件名来创建文件的名称。
char filename[1000]; // Make sure this is large enough.
sprintf(filename, "%s/%s", argv[1], file->d_name);
使用标准库函数打开并读取文件内容。
FILE* fin = fopen(filename, "r");
if ( fin != NULL )
{
// Read the contents of the file
}
在处理下一个目录条目之前关闭文件。
fclose(fin);
答案 1 :(得分:0)
我认为您需要查看file handling in c
while ((file=readdir(directory)) != NULL) {
printf("%s\n",file->d_name);
//To open file
a = fopen("file->d_name", "r+"); //a file pointer you declared
}