#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
int main(int argc, char** argv) {
struct stat *buf;
buf = malloc(sizeof(struct stat));
DIR * current_directory_ptr; /* DIR is a type from dirent.h */
struct dirent * next_entry_ptr; /* struct dirent is a type from dirent.h */
char* dirToView [200];
printf("Enter path of desired directory\n");
scanf("%s)", &dirToView);
current_directory_ptr = opendir(dirToView);
next_entry_ptr = readdir (current_directory_ptr);
while(next_entry_ptr != NULL){
printf("File has inode number %d and is called %s \n",
(int) next_entry_ptr ->d_ino, next_entry_ptr->d_name);
next_entry_ptr=readdir(current_directory_ptr);
}
char* fileToView [200];
printf("Enter name of desired file\n");
scanf("%s)", &fileToView);
stat(fileToView, buf);
off_t size = buf -> st_size;
printf("Size = %ld \n", size);
uid_t owner = buf ->st_uid;
printf("owner = %d \n", owner);
closedir(current_directory_ptr);
return (EXIT_SUCCESS);
}
Цель этого кода - использовать сканирование для получения и вывода информации о выбранном файле. Открытие каталога работает, но когда дело доходит до открытия файла, результат для размера и владельца равен 0 независимо от фактических значений для этого файла. Я считаю, что причиной этого является то, что я печатаю их как неправильный тип, но я не уверен в этом. Какая правильная система выводит результат stat()?Просмотр атрибутов файла со статусом (C)
Редактировать для ясности
вопрос лежит на линии выделены ниже
char* fileToView [200]; printf("Enter name of desired file\n"); scanf("%s)", &fileToView); stat(fileToView, buf); off_t size = buf -> st_size; printf("Size = %ld \n", size); uid_t owner = buf ->st_uid; printf("owner = %d \n", owner);
код ранее в функциях программы по назначению, по крайней мере один ответ был ссылкой на ранее линий. Приносим извинения за отсутствие ясности.
Не выполняйте 'scanf ("% s) ", & dirToView);' и 'scanf ("% s) ", & FileToView);', которые вызывают несоответствие типов и неопределенное поведение. – MikeCAT
Каков правильный тип в этом случае? Существует ли тип каталога? – 4oursword
Использовать 'char dirToView [200]; scanf ("% 199s)", dirToView); 'и' char fileToView [200]; scanf ("% s)", fileToView); ' – MikeCAT