Я написал код для отображения последних измененных имен времени и файлов. Мой код компилируется, но мне нужно, чтобы изменить формат метки времениКак я могу изменить свой вывод на печать? (Системное программирование и C)
Что я хочу:
Jul 17 12:12 2013 2-s.txt
Jul 17 12:12 2013 3-s.txt
Что я получаю сейчас:
Wed Jul 17 12:24:48 2013
2-s.txt
Wed Jul 17 12:24:48 2013
3-s.txt
Может ли кто-нибудь взглянуть на мой код ниже и дать мне несколько советов по его устранению? Спасибо!!!
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/utsname.h>
#include <ctype.h>
#include <string.h>
#include <ar.h>
#include <getopt.h>
#include <time.h>
#include <utime.h>
int main (int argc, char **argv)
{
FILE *fp;
size_t readNum;
long long tot_file_size, cur_file_size;
struct stat fileStat;
struct ar_hdr my_ar;
struct tm fileTime;
struct utimbuf *fileTime2;
//open the archive file (e.g., hw.a)
fp = fopen(argv[1], "r");
if (fp == NULL)
{
perror("Error opening the file\n");
exit(-1);
}
//size of the archive file
fseek(fp, 0, SEEK_END);
tot_file_size =ftell(fp);
rewind(fp);
//read data into struct
fseek(fp, strlen(ARMAG), SEEK_SET); //skip the magic string
while (ftell(fp) < tot_file_size - 1)
{
readNum = fread(&my_ar, sizeof(my_ar), 1, fp);
if (stat(argv[1], &fileStat) == -1) {
perror("stat");
exit(EXIT_FAILURE); //change from EXIT_SUCCESS to EXIT_FAILURE
}
if ((fileStat.st_mode & S_IFMT) == S_IFREG)
{
printf("%s", ctime(&fileStat.st_mtime));
printf("%.*s", 15, my_ar.ar_name);
}
cur_file_size = atoll(my_ar.ar_size);
if (fseek(fp, cur_file_size, SEEK_CUR) != 0)
{
perror("You have an error.\n");
exit(-1);
}
}
fclose(fp);
return 0;
}
Большое вам спасибо за советы! Я замечаю, что вы используете местное время. Мне нужно использовать последнее измененное время файла. Есть ли способ, которым мы можем отредактировать это (например, удалить ср в начале)? – user2203774
Проверьте [это] (http://stackoverflow.com/questions/13542345/how-to-convert-st-mtime-which-get-from-stat-function-to-string-or-char) –