【发布时间】:2015-07-02 13:29:22
【问题描述】:
我无法让这个函数工作,因为出于某种原因,opendir 不会正确地将 buffer2(声明为 char buffer2[128])作为参数。如果我用“。”之类的东西替换变量。或“样品”,它工作得很好。但是这样做,我每次都会遇到分段错误。请帮忙。
system("clear");
DIR *dirp;
struct dirent *dp;
printf("Enter directory name: ");
fgets(buffer2, 100, stdin);
if((dirp = opendir(buffer2)) == NULL)
printf("Could not open directory\n");
while((dp = readdir(dirp)) != NULL)
printf("%s\n", dp->d_name);
closedir(dirp);
printf("Hit enter to return to selection.");
getchar();
【问题讨论】:
-
尝试将while循环和closeir放在if块中
-
用
fgets读入的字符串在末尾保留换行符。阅读后尝试使用strtok(buffer2, "\n")将其删除。您还应该检查fgets的返回值。 -
您是否尝试过
strcpy(buffer2, ".")或确认问题在于您使用的是缓冲区而不是缓冲区的内容?
标签: c linux directory systems-programming opendir