LINUX.ORG.RU

Не совсем понял, что значит загнать в массив?
Если нужно просто поменять время модификации для файла, то
man utime

Dead ★★★★
()

struct stat stat_buf;
int fd;
fd = open("file",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);
if (fstat(fd, &stat_buf) == -1)
printf("error\n");

ну и обращайся к stat_buf.st_mtime
ещё можно воспользоваться lstat(...)

это нужно было???

kavich
()
Ответ на: комментарий от Dead

нет... мне нужно сохранить время модификации нескольких файлов в массив, чтобы потом вывысти на экран

anonymous
()
Ответ на: комментарий от kavich

как обращаться??? у меня создан массив указателей, и я пытаюсь туда писать значение st_mtime для каждого считываемого файла...

вот кусок программы:

char *time[6000];

... for (i=0;i<n;i++) //перебираем файлы ... stat(file,&st); j=0; while(1) { *(time[i]+j)=(st.st_mtime+j); if ((st.st_mtime+j)==0) break; j++; } ...

потом вывожу массив time...

пишет - ошибка сегментации

Что делать то???

anonymous
()
Ответ на: комментарий от anonymous

во первых ты выделил только указатели на строки ... надо ещё выделить память на сами строки, потом воспользоваться что нить типо sprintf(time[i], "%i", st.st_time) (вместо %i возможно что то другое)... надо это для того, что происходит изменения типа данных, это тебе не PHP.
во вторых алгоритм вообще тормозиться??? что если он циклится в while
в третьих, в цикле вайл ты проверяешь только последнее значение st, что абсурдно...
в четвертых, может книжку прочесть? http://cpp.samara.ws/articles/kir/index.shtml

kavich
()
Ответ на: комментарий от kavich

ещё причина того что он неругается при time[i]=st.st_time то что ты указателю на строку присваеиваешь число... выглядит так
[char*] = [int]
соответвено когда ты пытаешься вывести массив time, то он выдает ошибку потому что пытается найти строку по указателю..а не сам указатель...
ну в общем прога в корне неверна! точнее неверно обращение с памятью...

kavich
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.