C - открыть неверный файл - PullRequest
5 голосов
/ 10 апреля 2011

Мне интересно, как проверить, открываю ли я файл, который существует с fopen? Я хочу отобразить какое-нибудь сообщение, когда пользователь выбирает файл с плохим именем. Должна быть какая-то простая проверка, но я не могу ее решить.

Спасибо

Ответы [ 5 ]

3 голосов
/ 10 апреля 2011

При сбое fopen возвращается NULL и устанавливается errno для указания типа ошибки.

Проверьте возвращаемое значение и, если оно NULL, проверьте errno.Вы можете использовать такие функции, как perror или strerror для отображения простых сообщений об этих ошибках.

3 голосов
/ 10 апреля 2011

в вашем списке параметров:

FILE pFile ;

тогда:

  pFile = fopen ("myfile.txt","r");

if (pFile == NULL)
printf("No Such File !! ");
1 голос
/ 10 апреля 2011

Чтобы сделать это еще яснее:

f = fopen("some-file-name.ext", "r");
if (f == NULL) reporterror();

Но, вероятно, вы не хотите использовать fopen для проверки существования и прав доступа. Вы должны посмотреть на stat и access. Оба доступны в библиотеках C и используют man

0 голосов
/ 10 апреля 2011

См. возможные ошибки для open:

Однако, я думаю, вам будет нелегко найти способ определить, что имя файла неверно. В большинстве систем (кроме Windows) любая строка, которая не слишком длинная, потенциально допустима (по модулю / интерпретируется как разделитель пути).

0 голосов
/ 10 апреля 2011

Все просто: возвращенный указатель FILE* будет null, если файл не существует.

Конечно, это предполагает, что вы открываете его в r, режиме чтения.

...