C 结构stat和stat函数失败
我想做一个ls函数。下面是我对每个文件的描述代码C 结构stat和stat函数失败,c,struct,stat,scandir,C,Struct,Stat,Scandir,我想做一个ls函数。下面是我对每个文件的描述代码 struct stat fileStat; struct dirent **files; num_entries = scandir(filename, &files, file_select, alphasort); stat(files[i-1]->d_name,fileStat); 由于某些原因,一旦进入stat,它将返回-1。我认为这是因为fileStat不够大,无法存储这些值,但我不知道如何解决这个问题。提前谢谢你的帮
struct stat fileStat;
struct dirent **files;
num_entries = scandir(filename, &files, file_select, alphasort);
stat(files[i-1]->d_name,fileStat);
由于某些原因,一旦进入stat,它将返回-1。我认为这是因为fileStat不够大,无法存储这些值,但我不知道如何解决这个问题。提前谢谢你的帮助 考虑一下你自己。简而言之,stat()返回: 成功时,返回零。出现错误时,返回-1,返回errno 适当地设置 而errno的列表是:
- 伊斯
- EBADF
- 埃法特
- 私奔
- 搪瓷
- 埃诺特
- 烯醇
- 依诺蒂尔
- 溢流
if(stat(files[i-1]->d_name,fileStat)) {
switch(errno) {
case EACCES:
// Add code or at least
perror("STAT ERROR:");
break;
case EBADF:
// ...
break;
case EFAULT:
// ...
break;
// ...
// Do this to all possible errno's for the stat
// ...
case EOVERFLOW:
// ...
break;
}
}
如果在存储路径时遇到问题,请尝试将数组声明为(如果使用linux):
#包括
//...
字符当前路径[路径最大值];
如果您正在使用Windows:
#include <windows.h>
//...
char current_path[MAX_PATH];
#包括
//...
字符当前路径[最大路径];
另外,感谢您指出我的开关输入错误:)使用
errno
确定函数失败的原因。好的,它说没有这样的文件或目录。。。我能够修复它,只要有一个if循环,当它返回错误时什么也不做。但是是的。。。如何正确处理此问题?I
的值是多少?看见提供必要的详细信息,包括您的代码和相关错误(如果有),这里的每个人都可以帮助您解答问题。我使用I在for循环中运行文件,直到找到num_条目。scandir文件名不是路径。可能您需要在此处预先添加“文件名”
。在一个开关中不能有两次大小写默认值:
)
#include <windows.h>
//...
char current_path[MAX_PATH];