readdir()返回文件名時(shí),stat()錯(cuò)誤“沒(méi)有此類(lèi)文件或目錄”我無(wú)法確定統(tǒng)計(jì)信息引發(fā)的錯(cuò)誤。下面的程序讀取目錄中的所有文件并打印文件名: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這里是內(nèi)容: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貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
dirp->d_name
是目錄中文件的名稱(chēng):例如,"udpclient.c"
。因此,文件的全名是"/home/eipe/c/udpclient.c"
-但您當(dāng)前的工作目錄是/home/eipe
,因此stat()
正在嘗試訪(fǎng)問(wèn)"/home/eipe/udpclient.c"
,該目錄不存在。
您可以將工作目錄更改為argv[1]
using chdir()
,也可以argv[1]
在調(diào)用前添加每個(gè)文件名stat()
。
- 2 回答
- 0 關(guān)注
- 929 瀏覽
添加回答
舉報(bào)
0/150
提交
取消