Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
ruschelser
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 10
1

Чтение/запись из/в файл .txt

19.12.2013, 00:53. Просмотров 844. Ответов 18
Метки нет (Все метки)

Имеется файл названный stses формата txt, и вот его содержание:

3
Loyed 4
Greable 7
Otto 2


в методичке приведен пример проги, которая сначала извлекает данные из сего файла, а потом записывает в него на последнюю строчку: Yakov 1

вот код:

C++
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
26
27
28
29
30
31
32
33
34
35
#include "stdafx.h"
#include "iostream"
#include "string.h"
#include "fstream"
#include "conio.h"
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int n,*M,i;
    char **name,fam[30];
 
       fstream ff("stses.txt");
       ff>>n;
       name=new char*[n];
       M=new int[n];
 
                    for(i=0;i<n;i++)
                    {
                       ff>>fam>>M[i];
                       name[i]=_strdup(fam);
                    }
                    ff.close();
 
 
                                    
    ff.open("stses.txt",ios::app);
    ff<<"Gerber "<<5;
    ff.close();
 
    _getch();
    return 0;
}
}
Через мгновение после начала компиляции мне выдается ошибка (см. вложения)

самая простая прога, которая должна работать, так как она из методички и там все по кусочкам объясняется, но вот эта хрень происходит

Помогите пожалуйста в решении данной проблемы (у меня зачет в пятницу и надо писать наподобие этой((((()
0
Миниатюры
Чтение/запись из/в файл .txt  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2013, 00:53
Ответы с готовыми решениями:

Открыть текстовый файл в необходимом режиме (на чтение, на чтение и запись, на добавление)
Открыть текстовый файл в необходимом режиме (на чтение, на чтение и запись, на...

Записать 200 случайных чисел в файл a.txt. В файл b.txt вывести четные, а в файл c.txt нечетные
Записать 200 случайных чисел в файл a.txt. В файл b.txt вывести четные, а в...

Запись в файл .txt . C++
Здравствуйте! Планировал записывать при каждом вызове функции в текст с новой...

Запись в файл txt
studBeg = GetStud(hDlg); out.open(&quot;output.txt&quot;, ios_base::app); ...

Чтение файла xls и перезапись данных в файл txt
Задача Файл xls в нем данные (текст и числа), алгорит читает файл xls и...

18
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.12.2013, 01:27 2
Открытие файла для чтения всегда проверять нужно (может в этом дело):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int n, *M, i;
    char **name, fam[30];
 
    fstream ff("stses.txt");
    if (!ff) cout << "Error!" << endl;
    else
    {
        ff >> n;
        name = new char*[n];
        M = new int[n];
 
        for(i = 0; i < n; i++)
        {
            ff >> fam >> M[i];
            name[i] = _strdup(fam);
        }
        ff.close();
 
        ff.open("stses.txt",ios::app);
        ff<<"Gerber "<<5;
        ff.close();
    }
    _getch();
    return 0;
У меня, этот код, ошибки не вызывает.
0
ruschelser
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 10
19.12.2013, 23:46  [ТС] 3
запускается консоль на которой вывелось error!
а что за ошибка понятия не имею
и объясните что за условие "!ff"
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.12.2013, 23:56 4
Цитата Сообщение от ruschelser Посмотреть сообщение
запускается консоль на которой вывелось error!
а что за ошибка понятия не имею
и объясните что за условие "!ff"
Ошибка при открытии файла. Файл не находит. Файл для чтения должен существовать и находиться в папке проекта.
1
ruschelser
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 10
19.12.2013, 23:58  [ТС] 5
спасибо
попытаюсь понять в чем дело
нам сказали что файл может находиться в папке проекта, вот я его туда и кидаю
может ли быть это еще из-за того, что название в проге с указанием типа, а вот в папке с проектом с указанием что файл txt?
хотя я и с наванием и без пробовал - одна хрень
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.12.2013, 00:09 6
Что бы не гадать. В самом начале кода пропишите:
C++
1
ofstream f2("test.txt");
И посмотрите, где появится этот файл и как будет выглядеть его имя в папке. Вот там должен быть и файл для чтения, и выглядеть (формат имени) точно так же. Бывает заморочка с именем файла и расширением. Может в ОС расширения файлов скрыты. Тогда нужно имя файла задавать без расширения, которое система сама добавит, иначе, если задать имя файла, как в коде, то реально получится файл с другим полным именем (в конце имени .txt.txt будет).
0
ruschelser
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 10
20.12.2013, 00:31  [ТС] 7
вот простейшая прога, а не работает - все одни и те же ошибки
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.12.2013, 00:38 8
Цитата Сообщение от ruschelser Посмотреть сообщение
вот простейшая прога, а не работает - все одни и те же ошибки
Это ответ на 6 пост? Или что?
0
ruschelser
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 10
20.12.2013, 00:42  [ТС] 9
это печальный вывод из того что происходит сейчас в этом грёбаном visual(((
0
nomyac
2 / 9 / 7
Регистрация: 12.10.2013
Сообщений: 43
20.12.2013, 00:46 10
Господи, да проблема только с выделением памяти. Я не стану кидать код т.к. считаю, что полезнее автору разобраться самому
C++
1
2
name = new char*[n];
        M = new int[n];
1
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.12.2013, 00:48 11
Кроме печальных выводов, хотелось бы ещё узнать результат предложенных, в 6 посте, действий. Я время трачу на что?

Добавлено через 1 минуту
nomyac, вы посты читаете? Прочитайте третий. Код рабочий (проверено), и с памятью там всё нормально.
0
gromo
373 / 272 / 30
Регистрация: 04.09.2009
Сообщений: 1,214
20.12.2013, 00:51 12
ruschelser, это код в точности из вашей методички?
Если так, то сочувствую вам, сам учусь в подобном заведении. Сходу видно, что память не освобождается с помощью delete. Это раз.
Слышали или пытались найти что такое std::bad_alloc ? Значит невозможно выделить достаточно памяти или какая-то проблема с хипом. Это 2.
Пошагово пройдитесь по программе, определите место ошибки. Перехватите исключение и посмотрите, что выдаст std::Exception::what().
http://www.cplusplus.com/reference/new/bad_alloc/?kw=bad_alloc - вот пример.
1
ruschelser
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 10
20.12.2013, 00:53  [ТС] 13
найти не пытался, но возможно поможет - сейчас помозгую на этот счет
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.12.2013, 01:00 14
gromo, с памятью там всё в порядке. Ещё раз: код рабочий, проверено. bad_alloc из-за того, что файл не открывается (3 пост читайте!), соответственно в n ничего не считывается, в n муссор, под размер этого муссора выделяется память.

Добавлено через 2 минуты
Цитата Сообщение от ruschelser Посмотреть сообщение
сейчас помозгую на этот счет
Насчёт 6-го поста помозговать не хотите? Конкретный ответ дайте. Надоело уже в пустоту писать...
0
gromo
373 / 272 / 30
Регистрация: 04.09.2009
Сообщений: 1,214
20.12.2013, 01:05 15
Цитата Сообщение от alsav22 Посмотреть сообщение
с памятью там всё в порядке. Ещё раз: код рабочий, проверено. bad_alloc из-за того, что файл не открывается (3 пост читайте!), соответственно в n ничего не считывается, в n муссор, под размер этого муссора выделяется память.
возможно. ТС трудно вставить проверку...
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.12.2013, 01:10 16
Цитата Сообщение от gromo Посмотреть сообщение
возможно. ТС трудно вставить проверку...
Он уже вставил (2 пост, 3 пост), раз пишет:
Цитата Сообщение от ruschelser Посмотреть сообщение
запускается консоль на которой вывелось error!
На консоль вывелось, значит срабатывает это:
C++
1
if (!ff) cout << "Error!" << endl;
1
gromo
373 / 272 / 30
Регистрация: 04.09.2009
Сообщений: 1,214
20.12.2013, 01:14 17
alsav22, тогда не понятно к чему вся каша до сих пор варится
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.12.2013, 01:16 18
Цитата Сообщение от gromo Посмотреть сообщение
alsav22, тогда не понятно к чему вся каша до сих пор варится
Потому, что ТС не хочет делать то, что предлагается (6 пост). Пора от темы отписываться.
0
Steve_noar
0 / 0 / 0
Регистрация: 17.12.2013
Сообщений: 1
20.12.2013, 11:40 19
попробуй так -
по крайней мере если дело в том что файла нету, то исправит.
C++
1
fstream ff ("test.txt", ios_base::app)
и еще советую по флаги почитать именно для ios_base
0
20.12.2013, 11:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2013, 11:40

Запись данных в файл txt
записываю через for(int i=0;i&lt;l;i++) f&lt;&lt;a.fio&lt;&lt;&quot; &quot;&lt;&lt;a.nomer&lt;&lt;&quot;...

Зависает запись в txt - файл
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;conio.h&gt;...

Запись текста в файл txt
Здравствуйте , подскажите как реализовать запись в файл, у меня что то не...


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

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

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