Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Demetrio2000
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 8
#1

Ввод из файла не работает - C++

13.10.2013, 14:51. Просмотров 339. Ответов 12
Метки нет (Все метки)

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

Внизу сокращённый текст программы с проблемным участком:


C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale (LC_ALL, "RUS"); // вызов функции настройки локали для отображения кириллицы
int i,c,j,n;
 
fstream f;
f.open("11.txt",ios::nocreate); //ввод из файла
 
if (f)
{
  char *str = new char [60];
     n=0;
    while (!f.eof())
    {
        f>>str;
        n++;
    }
    f.close();
    delete str;
}
else cout<<"Ошибка открытия файла";
getch();
}
В приведённом куске подсчитываю количество строк в файле
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2013, 14:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод из файла не работает (C++):

Почему не работает ввод данных из файла? - C++
Есть код сортировки бинарным деревом. Собственно не работает только ввод элементов из файла (case 2 в меню) Исходный код: #include...

Почему ввод переменной из файла не работает? - C++
Доброго времени суток! :senor: Не могу найти подходящую тему для обсуждения, а в правильности создания новой сомневаюсь. Поэтому напишу...

Не работает ввод имени файла через fget и открытие через fopen - C++
Уже все перепробовал и в гугле пару часов посидел. Но никак не пойму где проблема допустим в этом коде : char filename; char *p; ...

Не работает ввод - C++
Написал прогу, все бы норм, но слово для сравнения не вводится, если я ввожу слова самостоятельно. Просто пропускает ввод и работает...

Не работает ввод данных в структуру - C++
Не работает ввод данных в структуру. Программа вылетает при первом вводе. #include &lt;iostream&gt; using namespace std; struct...

Найти ошибки в коде (не работает ввод) - C++
Пропускает почему-то команду ввода. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;sstream&gt; #include...

12
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.10.2013, 14:56 #2
Это что?
C++
1
ios::nocreate
0
Demetrio2000
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 8
13.10.2013, 15:20  [ТС] #3
режим открытия файла. если файл не существует - ошибка. без этой строки тоже не работает. всё же вся суть в If(f).
По идее файловая переменная возвращает true, если проблем не было и файл открыт, и false если обратное.
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.10.2013, 15:27 #4
Цитата Сообщение от Demetrio2000 Посмотреть сообщение
режим открытия файла. если файл не существует - ошибка.
Это откуда такое? В ios:: такого режима нет.

Добавлено через 57 секунд
Файл существует и где находится?
0
Demetrio2000
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 8
13.10.2013, 15:42  [ТС] #5
нашёл где-то в инете + у меня в руках учебник по Си++ Павловской издательство Питер 2011, в котором этот режим описан и используется во всех примерах. Компилятор не ругается на него. Файл лежит в папке с проектом. пробовал прописывать путь к нему но так же безрезультатно
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.10.2013, 15:44 #6
Цитата Сообщение от Demetrio2000 Посмотреть сообщение
Компилятор не ругается на него.
Какой?
0
Demetrio2000
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 8
13.10.2013, 15:46  [ТС] #7
среда BDS 2006. большего не скажу)
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.10.2013, 15:51 #8
Вот здесь почитайте: ios::nocreate

Добавлено через 1 минуту
Цитата Сообщение от Demetrio2000 Посмотреть сообщение
Файл лежит в папке с проектом.
Полное имя файла (вместе с расширением)?
0
Demetrio2000
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 8
13.10.2013, 16:02  [ТС] #9
11.txt

Провожу эксперименты без проверки на открываемость: программа работает, но соответственно бесконечно крутит память (условие while (!eof)) и записывает несуществующие значения

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
n=5;
man *spisokf = new man[n];//объявление массива из структур,являющегося списком информации о спортсменах
i=0;
f.open("11.txt");
while ((!f.eof()) & (i<4))
    {
    f>>spisokf[i].lname;
    spisokf[i].progress=true;
    for(j=0;j<5;j++)
        f>>spisokf[i].time[j];
    i++;
    }
f.close();
в примере конечно я поставил ограничение на количество проходов
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.10.2013, 16:15 #10
В начале main() напишите:
C++
1
ofstream fout("22.txt");
И посмотрите, где файл появится и с каким именем.

Добавлено через 2 минуты
Видимость расширений файлов в ОС включена?
0
Demetrio2000
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 8
13.10.2013, 16:26  [ТС] #11
Большое спасибо! Помогло, файл 22 появился не в той папке где лежал мой файл. переместил свой и всё заработало. Но тогда возникает такой вопрос: если мне нужно ввести конкретный путь к файлу, как это оформляется? была запись:

C++ (Qt)
1
f.open("D:\11.txt");
переместил файл на диск Д в корень,
но проблема не решилась.
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.10.2013, 16:29 #12
Обратный слеш двойным нужно писать:
C++
1
f.open("D:\\11.txt");
Добавлено через 51 секунду
Цитата Сообщение от Demetrio2000 Посмотреть сообщение
файл 22 появился не в той папке
Файл 22 или файл 22.txt появился?
0
Demetrio2000
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 8
13.10.2013, 16:29  [ТС] #13
Блин, аж стыдно =\ спасибо )))

22.txt
0
13.10.2013, 16:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2013, 16:29
Привет! Вот еще темы с ответами:

ввод из файла - C++
подскажите как делать ввод из файла

Ввод из файла - C++
Есть ввод из файла, но при запуске программы ничего не происходит - черный экран с мигающим курсором ifstream in(&quot;D:\file.txt&quot;); ...

Ввод из файла. - C++
дана программа. в ней нужно ввести данные из файла. при выводе их на экран выводит не той кодировкой. помогите поменять. вот код программы:...

Ввод из файла - C++
Написал такой метод, но отказывается работать. void file_in(){ freopen(&quot;in.txt&quot;,&quot;r&quot;,stdin); cin&gt;&gt;size; ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.