此功能应显示目录中的文件列表,但是, 它仅适用于C:\ Users \“ name” \ Desktop 在其他目录中以所有名称显示(目录) 我尝试了其他方法,但只有这种方法才能正常工作(以某种方式)
# include <stdlib.h>
# include <dirent.h>
# include <sys/types.h>
# include <stdio.h>
int list(){
char s[50];
struct dirent *entry;
printf("Specify directory for list of files\n");
scanf("%s", &s);
DIR *dir = opendir(s);
FILE* ff;
if (dir){
printf("\n\n******\n\n");
while ((entry = readdir(dir)) != NULL) {
ff = (fopen(entry->d_name, "r"));
if (ff != NULL){
printf("%s\n",entry->d_name);
fclose(ff);
}
else if (ff == NULL) {
printf("%s(directory)\n",entry->d_name);
}
}
printf("\n******\n");
closedir(dir);
return 1;
}
答案 0 :(得分:2)
如果检查entry->d_name
的内容,您会发现它仅包含文件名而不包含完整路径。因此,当您尝试打开文件时,除非文件存在于当前目录中,否则无法打开文件。您需要构建完整路径并使用该路径打开文件。
char fullname[1024];
strcpy(fullname,s);
strcat(fullname,"\\");
strcat(fullname,entry->d_name);
ff = fopen(fullname, "r");