Я пытаюсь напечатать размер и время файла последнего доступа, последней модификации и последнего изменения. Но я получаю ошибки в терминале. В нем говорится, что тип возвращаемого значения из buf.st_size имеет тип «__off_t» и возвращаемое значение из buf.st_atime, buf.st_mtime, & buf.st_ctime имеет тип «__time_t».Печать размера и времени файла в C
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
struct stat buf;
if(argc==2){
stat(argv[1],&buf);
if(S_ISDIR(buf.st_mode))
printf("It's a directoy.\n");
else if(S_ISREG(buf.st_mode))
printf("It's a file.\n");
else
printf("It's other.\n");
printf("User ID: %d.\nGroup ID: %d.\n",buf.st_uid,buf.st_gid);
printf("Size in bytes: %zd .\n",buf.st_size);
printf("Last access: %s.\nLast modification: %s.\nLast change: %d.\n",buf.st_atime,buf.st_mtime,buf.st_ctime);
exit(0);
}
printf("No argument was given.\n");
}
Off-тему здесь, так как «отладить мой код» вопрос (без интуиции, что может быть неправильно). BTW сделал ли вы RTFM [stat (2)] (http://man7.org/linux/man-pages/man2/stat.2.html) внимательно? Также скомпилируйте все предупреждения и информацию об отладке ('gcc -Wall -Wextra -g') и используйте отладчик (' gdb'). Используйте также команду [stat (1)] (http://man7.org/linux/man-pages/man1/stat.1.html) –
Вы также не проверяете, что вызов 'stat()' преуспел. –
@ AndrewHenle Что вы имеете в виду, проверяя, был ли вызов stat() успешным? – Raghad