【发布时间】:2011-12-07 20:24:55
【问题描述】:
我有一个代码可以在 ansi C 中模仿 ls -la,但是当我将目录从 . (当前目录)到任何其他它一直说没有这样的文件或目录,有什么想法吗?
代码:
DIR * mydir;
struct dirent * mydirent;
struct stat st;
char outstr[100];
struct tm *tmp;
mydir = opendir("..");
while ((mydirent=readdir(mydir))!=NULL)
if ( stat(mydirent->d_name,&st) != -1 ) {
tmp = localtime(&st.st_mtime);
if (tmp == NULL)
perror("localtime ERROR: ");
else {
strftime(outstr, sizeof(outstr), "%d/%m/%Y", tmp);
printf("%o\t%d\t%d\t%d\t%d\t%s\t%s\n",
st.st_mode, st.st_nlink, st.st_uid, st.st_gid,
st.st_size, outstr, mydirent->d_name);
}
}
else
perror("stat ERROR: ");
closedir(mydir);
【问题讨论】:
-
你考虑过使用调试器吗?
-
您的标题具有误导性,您的问题与您使用的特定 C 版本无关。我认为“重新实现 POSIX ls”会更好。
-
@JensGustedt:它是 ANSI C...我们习惯在这里一直声明c++03、c89、c99、c++0x,以避免混淆
-
opendir("..") 打开父目录。您不希望 (".") 用于当前目录吗?
-
感谢您的回答 =) cnicutar 是对的 我忘记添加完整路径,抱歉给您带来麻烦,感谢@sehe 的澄清