readir读不出文件,死循环了,哪位大哥给看看
#include <stdio.h>
#include <sys/type.h>
#include <sys/stat.h>
#include <direct.h>
#include <stdio.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
char dirname[40];
DIR *dirptr;
struct dirent *entry;
int repeat = 1;
printf( "please input a directory to list :\n ");
gets(dirname);
dirptr = opendir(dirname);
if(dirptr == NULL)
{
printf( "can not open dir %s \n ", dirname);
exit(1);
}
do
{
entry = readdir(dirptr);
while(entry != NULL)
{
printf( "list : %s \n ", entr-> d_name);
} /*到这里就死循环了,没有读出任何文件,除了小点点*/
printf( "do you want to review?(y or n) ");
if(toupper(getchar()) == 'N ')
{
repeat = 0;
}
else
{
rewind(dirptr);
}
}while(repeat);
close(dirptr);
}
[解决办法]
entry = readdir(dirptr);
while(entry != NULL)
{
printf( "list : %s \n ", entr-> d_name);
} /*到这里就死循环了,没有读出任何文件,除了小点点*
------------------------------------------
楼主,你把entry当成啥啦?
readdir()一次读取出一个目录项.有内部指针来标识当前位置
改成这样.
while((entry = readdir(dirptr))!= NULL)
{
printf( "list : %s \n ", entr-> d_name);
} /*到这里就死循环了,没有读出任何文件,除了小点点*