从文件夹中读取所有.txt文件?

海盗旗

我正在尝试读取名为“数据集”的目录中的所有.txt文件。所有文本文件的名称都类似于1.txt,2.txt,3.txt ...,然后将文件内容保存到名为FILES的结构中。

在某些资料中,我使用了dirent.h库和readdir()函数。但是程序从目录读取的文件名未正确返回。这是我的相关代码:

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

typedef struct FILES{
    char **words;
    int wordCount;
}FILES;

void readFiles();

FILES *files;
int fileCount;

int main(){
    readFiles();

    return 0;
}

void readFiles(){
    FILE *file;
    DIR *directory;
    struct dirent *filesInDirectory;
    int counter;

    fileCount = 1;
    files = (FILES *)malloc(sizeof(FILES));
    directory = opendir("dataset");
    if(directory == NULL){
        printf("Warning: The directory name that is given in the code is not 
valid ..!");
        return;
    }else{
        while((filesInDirectory = readdir(directory)) != NULL){
            printf("%s\n", filesInDirectory->d_name);
            file = fopen(filesInDirectory->d_name, "r+");
            if(file == NULL){
                printf("Warning: The file named %s could not open ..!", 
filesInDirectory->d_name);
                return;
            }
            files[fileCount-1].wordCount = 1;
            files[fileCount-1].words = (char **)malloc(files[fileCount-
1].wordCount * sizeof(char *));
            counter = 0;

            while(!feof(file)){
                files[fileCount-1].words[counter] = (char *)malloc(20 * 
sizeof(char));
                fscanf(file, "%s", files[fileCount-1].words[counter]);
                files[fileCount-1].wordCount++;
                files[fileCount-1].words = (char **)realloc(files[fileCount-
1].words, files[fileCount-1].wordCount * sizeof(char *));
                counter++;
            }
            fileCount++;            
            fclose(file);
        }
    }

}

我在此处打印的文件名“ printf(“%s \ n”,filesInDirectory-> d_name);” 是“。”。我在哪里做错了?

埃德·赫尔

这不是评论的太大答案

这是您的问题:

1。

 files = (FILES *)malloc(sizeof(FILES));

这个足够一个FILES这还不够

  1. while((filesInDirectory = readdir(directory)) != NULL){
    

把像

size_t len = strlen(filesInDirectory->d_name);
if (len < 5 || strcmp(filesInDirectory->d_name + len - 4, ".txt") != 0) {
  continue;
}

这将检查以确保文件以.txt结尾

  1. 考虑使用fstat以确保该文件是文本文件

  2. 删除对malloc的转换

  3. 也许realloc用于files

  4. while ... feof 不好-请参见上面的链接

  5. fscanf(file, "%s",-缓冲区超限是可能的。为此做些事情。阅读手册页

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

逐行读取文件夹中的所有.txt文件

读取特定文件夹中的所有txt文件,并将所有内容写入一个txt文件

如何从Java读取文件夹中的所有文件?

如何随机读取文件夹中的所有文件

Java-读取文件夹中的所有.txt文件

按上次编辑时间读取文件夹中的所有 .txt 文件

读取文件夹和子文件夹中的所有文件-进度和大小

Matlab:读取文件夹中的所有wave

如何使用python和bs4读取和覆盖文件夹中的所有* .txt文件?

如何使用Groovy读取文件夹中的所有文件并替换文件中的模式

如何在SSIS中基于文件夹的创建日期读取文件夹的所有文件?

如何使用 Python 读取文件夹中的所有 .txt 文件并将其内容附加到一个 .txt 文件中?

从文件夹Python导入和读取所有文件

从Java中的多个文件夹读取多个txt文件

如何使用Java从文件夹中的所有文件中读取数据?

Kotlin:从 SD 卡中的文件夹中读取所有文件

读取Spark中嵌套文件夹中的所有文件

读取R中特定文件夹中的所有文件

删除所有文件的程序接受文件夹中的txt文件

根据文件内容重命名文件夹中的所有txt文件

根据.txt文件用文件夹中的所有文件替换几个单词

在包含文件夹中所有文件的版本号的inPowesShell中创建.txt文件

如何使用spring-batch和MultiResourceItemReader读取文件夹中的所有文件?

如何从SpringBoot应用程序的资源文件夹中读取所有文件?

Ubuntu终端-使用gnu parallel读取文件夹中所有文件中的行

Nginx是否读取文件夹/ etc / nginx / sites-available /中的所有文件

如何使用C读取文件夹中的所有文件

使用 pandas 读取子文件夹中的所有文件

通过Spark读取保存在文件夹中的所有Parquet文件

TOP 榜单

热门标签

归档