Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2012, 13:13   #1
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию узнать дату файла

Как мне лучше узнать дату модификации файла? (на чистом Си).
Артэс вне форума Ответить с цитированием
Старый 16.07.2012, 13:22   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

на "чистом" С никак

вот для Виндоус: GetFileTime()

Последний раз редактировалось onewho; 16.07.2012 в 13:25.
onewho вне форума Ответить с цитированием
Старый 16.07.2012, 13:33   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Артэс

Как мне лучше узнать дату модификации файла? (на чистом Си).

на "чистом" С никак

А теперь - правильный ответ oO

используй что-нибудь из этого - stat, fstat, _findfirst/_findnext
Rififi вне форума Ответить с цитированием
Старый 16.07.2012, 13:38   #4
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Rififi, ето в каких-таких хедерах лежит?
onewho вне форума Ответить с цитированием
Старый 16.07.2012, 13:56   #5
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Интересно. Попробовал такой вариант:

Код:
struct stat buf;

FILE *file;

file = fopen("log.txt","r");
fstat(file,&buf);
printf("modified: %s\n",buf.st_atime);
fclose(file);
Компилятор выдает ошибку "error: storage size of 'buf' isn't known".
Артэс вне форума Ответить с цитированием
Старый 16.07.2012, 14:14   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Сделать #include <sys/stat.h> не пробовали?
waleri вне форума Ответить с цитированием
Старый 16.07.2012, 15:27   #7
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

ох, я думал sys/ только для Линукса)
Вообщем вот:

Код:
int main()
{
struct stat buf;
FILE *file;
file=fopen("1.txt","r");
fstat(file,&buf);
printf("modified: %s\n",buf.st_atime);
fclose(file);
}
Но жалуется: warning: passing arg 1 of `fstat' makes integer from pointer without a cast

Что же тогда указывать в качестве первого аргумента?

Последний раз редактировалось Артэс; 16.07.2012 в 15:39.
Артэс вне форума Ответить с цитированием
Старый 16.07.2012, 16:33   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Вместо FILE и fopen() изпользуйте int и open() (или _open, смотря какой компилятор)
waleri вне форума Ответить с цитированием
Старый 16.07.2012, 17:04   #9
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Код:
#include <stdio.h>
#include <sys/stat.h>

int main()
{
struct stat buf;
int file;
file=open("1.txt","r");
fstat(file,&buf);
printf("modified: %s\n",ctime(buf.st_atime));
close(&file);
}
Крашает. Может не так вывожу данные, или еще что?
Артэс вне форума Ответить с цитированием
Старый 16.07.2012, 17:09   #10
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

close(&file) выглядит сомнительно...
Аргументы у open() тоже вроде не все строковые (но это я по памяти).
Убирайте задом наперед строчку за строчкой, пока не перестанет крашить... ну или воспользуйтес отладчиком...

Последний раз редактировалось waleri; 16.07.2012 в 17:13.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
узнать дату установки ОС на компьютере megostudent Общие вопросы Delphi 20 30.11.2015 19:21
Как узнать дату и версию Bios? Exitm Помощь студентам 14 05.05.2012 23:27
Как узнать дату создания файла на ftp Koder-KH Работа с сетью в Delphi 0 30.11.2011 18:11
Узнать дату по гринвичу через интернет art-programs Работа с сетью в Delphi 4 23.08.2011 23:12
как узнать дату создания файла green-shrek Помощь студентам 5 25.02.2010 17:33