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

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

Восстановить пароль Регистрация
 
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
19.10.2013, 01:15     Не работает ввод имени файла через fget и открытие через fopen #1
Уже все перепробовал и в гугле пару часов посидел. Но никак не пойму где проблема допустим в этом коде :
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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mytilus
82 / 82 / 8
Регистрация: 04.10.2012
Сообщений: 329
19.10.2013, 01:26     Не работает ввод имени файла через fget и открытие через fopen #2
Складывается впечатление, что fopen перегружена. Потому что, судя по вашему описанию, работает она совсем не так, как должна. Куда ссылается среда программирования, если навести курсор на fopen?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
19.10.2013, 01:34     Не работает ввод имени файла через fget и открытие через fopen #3
У меня открывает файл. А вы название вводите без кавычек и с расширением файла, я надеюсь?
alsav22
5282 / 4801 / 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
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2013, 02:00     Не работает ввод имени файла через fget и открытие через fopen #6
mzarb, Проект этот выложите, попробую у себя.

Добавлено через 1 минуту
Цитата Сообщение от mzarb Посмотреть сообщение
А в релиз папке есть только 2 тестовых файла.
Путь полный вводите? Если нет, то файлы должны быть в папке проекта, а не в папке релиз.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
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
Еще ссылки по теме:

Нахождение основных значений оформить через функцию RESHENIE(), ввод данных и вывод на печать через функцию MAIN() C++
Что сделать, чтобы размер N был не через const, а через ввод на экран 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
Ответ Создать тему
Опции темы

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