gpt4 book ai didi

C:将目录中的文件列表存储到数组中

转载 作者:太空宇宙 更新时间:2023-11-03 23:42:31 25 4
gpt4 key购买 nike

所以我想编写一个程序,遍历一个目录并将文件名添加到一个名为“filesList”的字符串数组中。但问题是,当它完成时,数组中的每个元素都是目录中最后一个文件的名称。这是代码:

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

int main(int argc, char *argv[])
{
int n=0, i=0;
DIR *d;
struct dirent *dir;
d = opendir(argv[1]);

//Determine the number of files
while((dir = readdir(d)) != NULL) {
if ( !strcmp(dir->d_name, ".") || !strcmp(dir->d_name, "..") )
{

} else {
n++;
}
}
rewinddir(d);

char *filesList[n];

//Put file names into the array
while((dir = readdir(d)) != NULL) {
if ( !strcmp(dir->d_name, ".") || !strcmp(dir->d_name, "..") )
{}
else {
filesList[i]= dir->d_name;
i++;
}
}
rewinddir(d);

for(i=0; i<=n; i++)
printf("%s\n", filesList[i]);
return 0;
}

最佳答案

这是因为您没有为 filesList 的各个元素分配内存。您正在为其分配“dir->d_name”(基本上将 filesList 的每个元素指向一个 d_name)。您应该为其中的每个条目执行 malloc。

else {
filesList[i] = (char*) malloc (strlen(dir->d_name)+1);
strncpy (filesList[i],dir->d_name, strlen(dir->d_name) );
i++;
}

关于C:将目录中的文件列表存储到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41653419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com