Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
#1

Не работает ввод имени файла через fget и открытие через fopen - C++

19.10.2013, 01:15. Просмотров 543. Ответов 8
Метки нет (Все метки)

Уже все перепробовал и в гугле пару часов посидел. Но никак не пойму где проблема допустим в этом коде :
C++
1
2
3
4
5
6
7
8
9
10
char filename[1024];
char *p;
FILE * pFile;
while(printf("type name of the file"), fgets(filename, 1024, stdin)){
  if ((p = strchr(filename, '\n')) != NULL)
  *p = '\0';
 
  pFile = fopen(filename, "r");
  if(pFile != NULL) break;
}
Сначала промучился пока не нашел инфу за добавление \n символа в filename при вводе, потом нашел способ, чтобы удалить, который есть в коде, но все ровно ничего не получается. pFile не понятно что содержит при вводе любых названий файлов, которых нету или если ввести те, которые есть, то тоже самое будет. То есть в pFile что-то(отличное от Null) есть, даже при том если ввести любой набор символов. В общем не знаю как уже открыть этот файл... Кстати, такая запись работает : fopen("D:\\1.txt", "r");
Windows 7
Visual C++ 2010
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2013, 01:15     Не работает ввод имени файла через fget и открытие через fopen
Посмотрите здесь:

C++ Ввод имени для создаваемого файла
Ввод имени файла с клавиатуры C++
Открытие файла через ехешник C++
C++ Повторное открытие файла через классы
Как в функции открытия файла fopen() задать путь через ключи C++
C++ Как в функции открытия файла fopen() задать путь через ключи
Что сделать, чтобы размер N был не через const, а через ввод на экран C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mytilus
82 / 82 / 8
Регистрация: 04.10.2012
Сообщений: 329
19.10.2013, 01:26     Не работает ввод имени файла через fget и открытие через fopen #2
Складывается впечатление, что fopen перегружена. Потому что, судя по вашему описанию, работает она совсем не так, как должна. Куда ссылается среда программирования, если навести курсор на fopen?
MrGluck
Ворчун
Эксперт CЭксперт С++
6625 / 3816 / 500
Регистрация: 29.11.2010
Сообщений: 10,068
19.10.2013, 01:34     Не работает ввод имени файла через fget и открытие через fopen #3
У меня открывает файл. А вы название вводите без кавычек и с расширением файла, я надеюсь?
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2013, 01:43     Не работает ввод имени файла через fget и открытие через fopen #4
C++
1
2
3
4
5
6
7
8
    char filename[1024];
    FILE * pFile;
    while(printf("type name of the file"), fgets(filename, 1024, stdin))
    {
        filename[strlen(filename) - 1] = '\0';
        pFile = fopen(filename, "r");
        if(pFile != NULL) break;
    }
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
19.10.2013, 01:57  [ТС]     Не работает ввод имени файла через fget и открытие через fopen #5
alsav22, Спасибо за вариант с удалением \n, а по поводу другого, то так как у других работает, то решил код скопировать в другой проект и все заработало как нужно и потом создал пустой проект и тоже все ок, а в этом, в котором не работало, то в настройках ничего не менял сто процентов и удалял все лишнее из кода, оставляя только этот фрагмент и все в целом как и в пустом проекте было. А в релиз папке есть только 2 тестовых файла. Даже не знаю что это за аномалия.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2013, 02:00     Не работает ввод имени файла через fget и открытие через fopen #6
mzarb, Проект этот выложите, попробую у себя.

Добавлено через 1 минуту
Цитата Сообщение от mzarb Посмотреть сообщение
А в релиз папке есть только 2 тестовых файла.
Путь полный вводите? Если нет, то файлы должны быть в папке проекта, а не в папке релиз.
MrGluck
Ворчун
Эксперт CЭксперт С++
6625 / 3816 / 500
Регистрация: 29.11.2010
Сообщений: 10,068
19.10.2013, 02:01     Не работает ввод имени файла через fget и открытие через fopen #7
Относительный путь к файлам берется от бинарника, либо от папки проекта, как во многих IDE.
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
19.10.2013, 02:18  [ТС]     Не работает ввод имени файла через fget и открытие через fopen #8
alsav22, с этим не досмотрел, но путь вводил полный для теста D:\\1.txt . Ладно, заработало и на том хорошо, просто я думал проблема в коде и из-за этого долго пытался понять в чем дело, а коль с кодом все хорошо, то дальше в дебри лезть не вижу смысла.
Ещё раз спасибо за помощь, а то ещё бы пол дня искал ошибки).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2013, 04:15     Не работает ввод имени файла через fget и открытие через fopen
Еще ссылки по теме:

Запись файла через одно приложение, а чтение через другое C++
C++ Вывод данных из файла, реализация через класс работает неправильно
Ввод имени файла от пользователя C++
Открытие файла через объекта класса fstream C++
C++ Открытие файла через переменную

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

Или воспользуйтесь поиском по форуму:
mytilus
82 / 82 / 8
Регистрация: 04.10.2012
Сообщений: 329
19.10.2013, 04:15     Не работает ввод имени файла через fget и открытие через fopen #9
Если в других проектах все работает, в нерабочем следует искать
C++
1
#define fopen что_то_там
или собственную функцию с именем fopen. Это самая распространенная причина.
Yandex
Объявления
19.10.2013, 04:15     Не работает ввод имени файла через fget и открытие через fopen
Ответ Создать тему
Опции темы

Текущее время: 19:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru