Я пытаюсь напечатать некоторые характеристики файлов внутри каталога (только те, которые начинаются с нижнего регистра). Однако, когда я выполняю следующий код, некоторые из них работают, а некоторые не. Похоже, что структура stat может работать некорректно, но пока я не смог определить ошибку.C - stat struct не работает должным образом
struct dirent *ep;
DIR *dp;
char* cwd;
char buff[PATH_MAX + 1];
off_t tamTotal=0;
struct stat archivo;
char path[]="/home/edu/Escritorio/P7/practica7/prueba";
if(!(dp=opendir(path))){
printf("Error.\n");
exit(-1);
}
printf("\nFILES:\n");
while (ep = readdir (dp)){
stat(ep->d_name, &archivo);
if(S_ISREG(archivo.st_mode)){
if(!isupper(ep->d_name[0])){
printf(" %s\n",ep->d_name);
printf(" Last modification date: %s \n",ctime(&archivo.st_mtime));
printf(" i-no number: %lu \n",archivo.st_ino);
printf(" Blocks: %lu \n",archivo.st_blocks);
printf(" Size: %lu \n",archivo.st_size);
}
}
}
ВЫВОД:
Ну, вы не проверяете возвращаемое значение 'stat', так как вы можете узнать, работает ли он« правильно »или нет? Я никогда не пойму, почему люди решают пропустить проверку ошибок, а затем переходят в Stack Overflow, спрашивая, почему их код ведет себя странно. –
Возможно, прочитайте [stat] (https://linux.die.net/man/2/stat) и проверьте, что возвращаемое значение поможет –
Действительно, это создает ошибку при создании структуры. Любые идеи почему? –