Способ отображения времени время изменения СТ и СТ
Я хочу отобразить два моих атрибута из структуры stat
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
Вот мой код, который я пытаюсь отобразить в последний раз доступа и в последний раз последней модификации папки / файла
struct tm *time;
char buffer[200];
time = localtime(file_info.st_atime);
strftime(buffer, sizeof(buffer), "%d.%m.%Y %H:%M:%S", time);
printf("%sn", buffer);
time = localtime(file_info.st_mtime);
strftime(buffer, sizeof(buffer), "%d.%m.%Y %H:%M:%S", time);
printf("%sn", buffer);
Я хочу отображать, как человек считывает время и дату, например, 15.03.1952 23: 11: 34 информации о папке / файле, которая была в последний раз изменена или доступна в linux
3 ответа:
Это немного отличается от вашего кода с точки зрения стиля, но, возможно, это полезно?
#include <time.h> #include <stdio.h> #include <sys/stat.h> #include <stdlib.h> char* formatdate(char* str, time_t val) { strftime(str, 36, "%d.%m.%Y %H:%M:%S", localtime(&val)); return str; } int main() { int errno; const char* filename; filename = "stat.c"; errno = 0; struct stat *file_info = malloc(sizeof(struct stat)); if (lstat(filename, file_info) != 0) { perror("Error"); exit(1); } char date[36]; printf("Access: %s\n", formatdate(date, file_info->st_atime)); printf("Modify: %s\n", formatdate(date, file_info->st_mtime)); printf("Change: %s\n", formatdate(date, file_info->st_ctime)); free(file_info); return 0; }
И это тот ответ, который я искал еще раз спасибо.char buffer[200]; printf("Access : %s\n", formatdate(buffer, file_info.st_atime)); printf("Modify : %s\n", formatdate(buffer, file_info.st_mtime)); printf("\n\n"); char *formatdate(char *buff, time_t val) { strftime(buff,200, "%d.%m.%Y %H:%M:%S", localtime(&val)); return buff; }