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()
。
- 2 回答
- 0 关注
- 899 浏览
添加回答
举报
0/150
提交
取消