2014-10-02 1 views
-1

Для одной из моих домашних заданий я должен прочитать файл (~ 100 строк). Чтобы управлять содержимым файла и извлекать все строки, я выделяю буфер с размером файла с функцией stat. И я прочитал файл с функцией, прочитанной с помощью этого буфера. Мне сказали, что этот метод был грязным.stat чтобы получить размер файла и скопировать его

Почему это считается грязным? Я думаю, что если файл короткий, это означает, что размер массива char допустим, а это означает только несколько syscall ??

+0

Вы должны спросить тех, кто сказал, что метод грязный. –

+0

Я должен был спросить. Сейчас уже слишком поздно. – bandera

+0

Я думаю, вы должны проверить, является ли файл первым. Эта функция '' 'stat''' может вам это сказать. Помимо этого вы можете проверить размер файла с помощью stat. См. [Man] (http://pubs.opengroup.org/onlinepubs/000095399/basedefs/sys/stat.h.html) --- '' 'struct stat. st_size''' --- Для обычных файлов размер файла в байтах. Для символических ссылок длина в байтах имени пути содержится в символической ссылке. –

ответ

1

Если ваш файл является символической ссылкой вместо обычного файла, вы получите «длину в байтах пути, содержащегося в символической ссылке». Поэтому вы не должны использовать его для получения длины файла. Это можно увидеть в документации о возврате структуры stat. (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/stat.h.html)