LINUX.ORG.RU

Ошибка сегментирования при использовании fseek.

 fseek,


0

1

При рекурсивном обходе каталогов нужно узнавать размер каждого из файлов с помощью fseek-ftell. Выкладываю только отрывок, потому что остальное работает.

FILE* var;
char path[512];

getcwd(path,510);
strcat(path,"/");
strcat(path,name);
// name - имя обрабатываемого в данный момент файла.
//через принтф дорожка выводится так, как и должна выглядеть.

var=fopen(path,"rb");
//при замене path на name ошибка остаётся.
fseek(var, 0, SEEK_END);
big=big+(ftell(var));

fclose(var);

Простенькая проверка с помощью printf показала, что ошибка происходит именно на fseek, до следующий строки выполнение даже не доходит. В чём может быть проблема?



Последнее исправление: VariousArtist (всего исправлений: 2)

$ man fopen
...
RETURN VALUE
       Upon successful completion fopen(), fdopen() and freopen() return a FILE pointer.  Otherwise, NULL is returned and errno is
       set to indicate the error.

Хто это будет проверять?;-)

AIv ★★★★★
()

Ну и зачем за пределы файла выходить?

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

Спасибо. Теперь я буду знать, что ошибка возникает всё-таки при открытии.

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

А чем lstat плох для размера ?

Тем, что в задании нужно определять размер двумя разными способами. И stat уже использован.

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