将元素推送到数组的最简单方法是什么?
我有以下代码用于打印目录中的文件:
DIR *d;
struct dirent *dir;
d = opendir(".");
if (d) {
while ((dir = readdir(d)) != NULL) {
if (dir->d_type == DT_REG) {
printf("%s\n", dir->d_name);
}
}
}
closedir(d);
这是输出:
File1.c
File2.c
File3.c
我想将它们添加到这样的数组中:
arr[] = {"File1.c","File2.c","File3.c"};
因此,我可以轻松调用任何给定的项目,例如 arr[1] 并获取 "File2.c"
我怎样才能做到这一点?
(几年前我学过C,但现在我不记得具体是怎么做的了)
最佳答案
您可以在需要时使用malloc()
来分配空间。您创建一个指针数组,其中包含您将支持的最大文件数。然后填写由 malloc()
创建的内存指针,并将值复制到该位置。
char *arr[NUMBER_OF_FILES];
arr[i] = malloc(strlen(*(dir->d_name)) + 1);
strcpy(arr[i], *(dir->d_name));
您可以稍后访问这些元素:
printf(*(arr[0])) //this will output "File1.c"
更新:
正如 Ferdinand 在评论中所建议的,您可以使用 strdup()
来避免 malloc()
:
char *arr[NUMBER_OF_FILES];
arr[i] = strdup(dir->d_name);
Important:
Remember to usefree()
for all allocated memory to avoid memory leakage.
关于arrays - ANSI C : Insert elements to array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22802716/