0 / 0 / 0
Регистрация: 17.05.2019
Сообщений: 23

Проблема с открытием текстового файла

29.09.2021, 22:10. Показов 787. Ответов 9

Студворк — интернет-сервис помощи студентам
Добрый вечер, форумчане! Прошу вашей помощи.
У меня есть следующий фрагмент кода:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
FILE* openInputFile()
{
    printf("Enter the name of the input file: ");
    char inputFileName[PATH_MAX + 1];
    scanf("%s", inputFileName);
    if (strstr(inputFileName, ".txt") == NULL)
        strcat(inputFileName, ".txt");
    FILE* inputFile = fopen(inputFileName, "r");
    return inputFile;
}
 
int main()
{
    FILE* inputFile = openInputFile();
    if (inputFile == NULL) {
        printf("File open error!");
        return 0;
    }
    ...
    return 0;
}

Этот код при попытке открыть файл выдаёт "File open error!", то есть функция openInputFile возвращает NULL.
Почему так получается и что можно с этим сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.09.2021, 22:10
Ответы с готовыми решениями:

Проблема с открытием файла для вывода текста в него.
ofstream offile; void royal_flush (); void straight_flush(); int main () { //махинации royal_flush (); }

Проблема с открытием mp3 файла
Здравствуйте товарищи программисты. Возникла маленькая проблемка. Имеется код для открытия и получения ID3 тегов mp3 файла: int Handle =...

Проблема с открытием bat файла через код на С++
Доброго времени суток, есть код очень простенький суть его в том что в компиляторе VS 2017 он запускается и с помощью него должна...

9
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
29.09.2021, 22:14
Цитата Сообщение от Artyom Kopan Посмотреть сообщение
inputFile
inputFile локальная переменная внутри функции openInputFile(). Поэтому после завершения функции openInputFile() она не существует !
Посмотрите на мой блог для рационального выбора при возвращении указателя: https://www.cyberforum.ru/blog... g7123.html
1
0 / 0 / 0
Регистрация: 17.05.2019
Сообщений: 23
29.09.2021, 22:16  [ТС]
Но я же возвращаю inputFile из функции...
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
29.09.2021, 22:17
Цитата Сообщение от Artyom Kopan Посмотреть сообщение
Но я же возвращаю inputFile из функции...
Это нельзя когда она ЛОКАЛЬНАЯ ПЕРЕМЕННАЯ как вы сделали !
1
0 / 0 / 0
Регистрация: 17.05.2019
Сообщений: 23
29.09.2021, 22:22  [ТС]
Но когда я таким же образом открываю другой файл:
C++
1
2
3
4
5
6
7
8
9
10
FILE* openOutputFile()
{
    printf("Enter the name of the output file: ");
    char outputFileName[PATH_MAX + 1];
    scanf("%s", outputFileName);
    if (strstr(outputFileName, ".csv") == NULL)
        strcat(outputFileName, ".csv");
    FILE* outputFile = fopen(outputFileName, "w");
    return outputFile;
}
то возвращается вполне нормальный указатель
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
29.09.2021, 22:25
Цитата Сообщение от Artyom Kopan Посмотреть сообщение
то возвращается вполне нормальный указатель
Цитата Сообщение от Artyom Kopan Посмотреть сообщение
FILE* outputFile = fopen(outputFileName, "w");
Случайно.
1
0 / 0 / 0
Регистрация: 17.05.2019
Сообщений: 23
29.09.2021, 22:25  [ТС]
А что же делать? Открывать файлы в main()?
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
29.09.2021, 22:39
Artyom Kopan, вы сможете объявить outputFile как глобальная как я понимаю.
1
0 / 0 / 0
Регистрация: 17.05.2019
Сообщений: 23
29.09.2021, 22:40  [ТС]
Спасибо, попробую!
Надуюсь, преподаватель не побьёт меня за это))
0
Модератор
Эксперт Java
 Аватар для alecss131
2830 / 1339 / 402
Регистрация: 11.08.2017
Сообщений: 4,266
Записей в блоге: 2
30.09.2021, 21:54
Цитата Сообщение от Volga_ Посмотреть сообщение
глобальная
глобальные переменные зло
и чем способ автора отличается от вашего третьего шаблона? и там и там возвращается копия указателя, файл после выхода из функции не закрывается, он автоматом закроется только после завершения main. inputFile изначально указатель, понимаю возвращать указатель на локальную переменную
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.09.2021, 21:54
Помогаю со студенческими работами здесь

Проблема с открытием текстового файла. Excel97 VBA
Приветсвую Вас! Не сталкивался ли кто с подобной проблемой: есть текстовый CSV файл с разделителями ';' в котором присутствуют дробные...

Проблема с открытием файла
Доброго времени! Есть код(агент) в котором получаю содержимое файла (NotesStream). Если этот агент вызываю другим агентом или по CORBA,...

Проблема с открытием файла sh
Всем привет! При открытии sh файла при помощи notepad++ или gvim, содержимое файла отображается иероглифами. Скажите пожалуйста в чем...

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

проблема с открытием файла
Доброго времени суток! Есть документы. Все бы ничего, но... есть документы, которые не открываются, выдавая ошибку, что на форме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений Всем привет. А вот мой компьютер, переделанный из ноутбука. Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца: Хочу еще Симбу взять, очень нравится. . .
Инференс ML моделей в Java: TensorFlow, DL4J и DJL
Javaican 05.11.2025
Python захватил мир машинного обучения - это факт. Но когда дело доходит до продакшена, ситуация не так однозначна. Помню проект в крупном банке три года назад: команда data science натренировала. . .
Mapped types (отображённые типы) в TypeScript
Reangularity 03.11.2025
Mapped types работают как конвейер - берут существующую структуру и производят новую по заданным правилам. Меняют модификаторы свойств, трансформируют значения, фильтруют ключи. Один раз описал. . .
Адаптивная случайность в Unity: динамические вероятности для улучшения игрового дизайна
GameUnited 02.11.2025
Мой знакомый геймдизайнер потерял двадцать процентов активной аудитории за неделю. А виновником оказался обычный генератор псевдослучайных чисел. Казалось бы - добавил в карточную игру случайное. . .
Протоколы в Python
py-thonny 31.10.2025
Традиционная утиная типизация работает просто: попробовал вызвать метод, получилось - отлично, не получилось - упал с ошибкой в рантайме. Протоколы добавляют сюда проверку на этапе статического. . .
C++26: Read-copy-update (RCU)
bytestream 30.10.2025
Прошло почти двадцать лет с тех пор, как производители процессоров отказались от гонки мегагерц и перешли на многоядерность. И знаете что? Мы до сих пор спотыкаемся о те же грабли. Каждый раз, когда. . .
Изображения webp на старых x32 ОС Windows XP и Windows 7
Argus19 30.10.2025
Изображения webp на старых x32 ОС Windows XP и Windows 7 Чтобы решить задачу, использовал интернет: поисковики Google и Yandex, а также подсказки Deep Seek. Как оказалось, чтобы создать. . .
Passkey в ASP.NET Core identity
stackOverflow 29.10.2025
Пароли мертвы. Нет, серьезно - я повторяю это уже лет пять, но теперь впервые за это время чувствую, что это не просто красивые слова. В . NET 10 команда Microsoft внедрила поддержку Passkey прямо в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru