Проверка наличия файла - C (СИ)
Формулировка задачи:
Доброго всем времени суток. У меня возникла следующая проблема.
Создаю программу "Простейшая база данных". Мне нужна проверка наличия файла. Т.е. ввожу название файла, например, "file_name=text". В случае отсутствия такого файла мне выдается ошибка о том, что stream != NULL и работа программы прекращается, чего мне не нужно. Как сделать так, чтобы программа не вылетала?
Прилагаю необходимый кусок программы:
puts ("Введите имя файла, с которым вы хотите работать."); fflush (stdin); gets (file_name); strcat (file_name, ".txt"); x=strlen (file_name); file_name[x]='\0'; input=fopen (file_name, "r"); if (!input) {puts ("Файл обнаружен. Работа возможна."); *vib=1;} else {puts ("Файл с таким названием не обнаружен. Если вы знаете, что такой файл существует, проверьте правильность написания."); puts ("Иначе создастся файл с таким названием."); } fclose (input);
Решение задачи: «Проверка наличия файла»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <locale.h> #define SIZE 1024 #define ERR_OPEN_FILE 1 int main(void) { char file_name[SIZE]; FILE *fp; setlocale(LC_ALL, "Rus"); printf("введите имя файла: "); gets(file_name); fp = fopen(file_name, "rb+"); if(!fp){ puts("Файл не обнаружен. Будет создан файл с указанным именем"); if(!(fp = fopen(file_name,"wb+"))) exit(ERR_OPEN_FILE); }else puts("Файл существует и успешно открыт"); fclose(fp); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и строками.
- Определение размера буфера и кода ошибки при открытии файла.
- Инициализация пустой переменной типа char для хранения имени файла.
- Создание указателя на файловый дескриптор.
- Установка локали на русскую, чтобы работать с русскими символами.
- Вывод сообщения с просьбой ввести имя файла.
- Считывание имени файла с помощью функции gets(file_name).
- Попытка открыть файл с помощью функции fopen(file_name,
rb+
). - Проверка на успешное открытие файла. Если файл не найден, выводится сообщение об этом и производится попытка создать новый файл с помощью функции fopen(file_name,
wb+
). - Если файл успешно открыт, выводится соответствующее сообщение.
- Закрытие файлового дескриптора с помощью функции fclose(fp).
- Возврат 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д