为了账号安全,请及时绑定邮箱和手机立即绑定

readdir()返回文件名时,stat()错误“没有此类文件或目录”

readdir()返回文件名时,stat()错误“没有此类文件或目录”

C
呼如林 2019-09-26 15:29:07
readdir()返回文件名时,stat()错误“没有此类文件或目录”我无法确定统计信息引发的错误。下面的程序读取目录中的所有文件并打印文件名:DIR *dp;struct dirent *dirp;struct stat sb;if((dp = opendir(argv[1]))==NULL){     perror("can't open dir");}while((dirp = readdir(dp))!=NULL){     if (stat(dirp->d_name, &sb) == -1) {         perror("stat");     }        printf("File name:               %s \n",dirp->d_name);}样本输出:/home/eipe stat error: No such file or directoryFile name:               copyofsample  File name:               a.out  File name:               . stat error: No such file or directoryFile name:               udpclient.c  File name:               .. stat error: No such file or directoryFile name:               client.c  stat error: No such file or directoryFile name:               ftpclient.c这里是内容:ls -l /home/eipe/c-rwxr-xr-x 1 eipe egroup 7751 2011-02-24 15:18 a.out-rw-r--r-- 1 eipe egroup  798 2011-02-24 13:50 client.c-rw-r--r-- 1 eipe egroup   15 2011-02-24 15:34 copyofsample-rw-r--r-- 1 eipe egroup 1795 2011-02-24 15:33 ftpclient.c-rw-r--r-- 1 eipe egroup  929 2011-02-24 13:34 udpclient.c
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

dirp->d_name目录中文件的名称:例如,"udpclient.c"。因此,文件的全名是"/home/eipe/c/udpclient.c"-但您当前的工作目录是/home/eipe,因此stat()正在尝试访问"/home/eipe/udpclient.c",该目录不存在。

您可以将工作目录更改为argv[1]using chdir(),也可以argv[1]在调用前添加每个文件名stat()


查看完整回答
反对 回复 2019-09-26
  • 2 回答
  • 0 关注
  • 899 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信