Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 17.05.2019
Сообщений: 23
1

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

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

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

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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2021, 22:10
Ответы с готовыми решениями:

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

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

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

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

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

9
Модератор
Эксперт CЭксперт С++
5174 / 2896 / 1501
Регистрация: 14.12.2018
Сообщений: 5,233
Записей в блоге: 1
29.09.2021, 22:14 2
Цитата Сообщение от 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  [ТС] 3
Но я же возвращаю inputFile из функции...
0
Модератор
Эксперт CЭксперт С++
5174 / 2896 / 1501
Регистрация: 14.12.2018
Сообщений: 5,233
Записей в блоге: 1
29.09.2021, 22:17 4
Цитата Сообщение от Artyom Kopan Посмотреть сообщение
Но я же возвращаю inputFile из функции...
Это нельзя когда она ЛОКАЛЬНАЯ ПЕРЕМЕННАЯ как вы сделали !
1
0 / 0 / 0
Регистрация: 17.05.2019
Сообщений: 23
29.09.2021, 22:22  [ТС] 5
Но когда я таким же образом открываю другой файл:
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Эксперт С++
5174 / 2896 / 1501
Регистрация: 14.12.2018
Сообщений: 5,233
Записей в блоге: 1
29.09.2021, 22:25 6
Цитата Сообщение от Artyom Kopan Посмотреть сообщение
то возвращается вполне нормальный указатель
Цитата Сообщение от Artyom Kopan Посмотреть сообщение
FILE* outputFile = fopen(outputFileName, "w");
Случайно.
1
0 / 0 / 0
Регистрация: 17.05.2019
Сообщений: 23
29.09.2021, 22:25  [ТС] 7
А что же делать? Открывать файлы в main()?
0
Модератор
Эксперт CЭксперт С++
5174 / 2896 / 1501
Регистрация: 14.12.2018
Сообщений: 5,233
Записей в блоге: 1
29.09.2021, 22:39 8
Artyom Kopan, вы сможете объявить outputFile как глобальная как я понимаю.
1
0 / 0 / 0
Регистрация: 17.05.2019
Сообщений: 23
29.09.2021, 22:40  [ТС] 9
Спасибо, попробую!
Надуюсь, преподаватель не побьёт меня за это))
0
Модератор
Эксперт Java
2558 / 1094 / 375
Регистрация: 11.08.2017
Сообщений: 3,332
30.09.2021, 21:54 10
Цитата Сообщение от Volga_ Посмотреть сообщение
глобальная
глобальные переменные зло
и чем способ автора отличается от вашего третьего шаблона? и там и там возвращается копия указателя, файл после выхода из функции не закрывается, он автоматом закроется только после завершения main. inputFile изначально указатель, понимаю возвращать указатель на локальную переменную
0
30.09.2021, 21:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2021, 21:54
Помогаю со студенческими работами здесь

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

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

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

Проблема с открытием файла excel
Здравствуйте не получается открыть файл excel oExcel = GetObject("2ндфл.xls") ошибку выдает в...

Проблема с открытием python файла
При запуске python файла через командную строку открывает приложение с кодом.


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru