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

Запись из файла в динам. массив - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Литература по классам http://www.cyberforum.ru/cpp-beginners/thread732138.html
Посоветуйте какую-то книгу где хорошо описано объявления, как работать с классами и все о классах!
C++ Определение ортогональной матрицы (проверить) проверьте пожалуйста,может что-то не то, определение ортогональной матрицы #include <vcl> #include <iostream> #include <conio> using namespace std; //--------------------------------------------------------------------------- typedef int* ip; http://www.cyberforum.ru/cpp-beginners/thread732123.html
C++ Создать массив структур
Создать массив структур A(n), где n<=20, содержащий сведения о книгах: автор, название и год издания. Выбрать из этого массива все записи о книгах заданного года издания и упорядочить полученный список по авторам. Полученный массив вывести на экран и в текстовый файл. Помогите пожалуйста решить эту задачу
Cколько раз повторятся в файле каждое слово (ООП) C++
Дан файл с текстом. Слово-последовательность символов латинского языка, остальное разделители. Определить, сколько раз повторятся в файле каждое слово. Вывести результат в отдельный файл Программа должна быть ООП
C++ Вычисление произведения четных чисел, меньших 15 http://www.cyberforum.ru/cpp-beginners/thread732072.html
Составьте программу вычисления произведения четных чисел,меньших 15. Огромное спасибо за ответ.
C++ Написать программу Голодная зима Написать программу с оператором while Голодная зима. Суточный рацион коровы составляет u кг сена, ν кг силоса и ω кг комбикорма. В хозяйстве, содержащем стадо из k голов, осталось s кг сена, t кг силоса и f кг комбикорма.. В стаде ежедневно погибает р% коров; ежедневно q% оставшегося сена сгни-вает; r% силоса разворовывается колхозниками; t% комбикорма распродает зав. фермой. Ко-гда нельзя будет... подробнее

Показать сообщение отдельно
damnare
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 18
15.12.2012, 02:31     Запись из файла в динам. массив
Доброго времени суток. суть - есть файлик, в нем строчки, я хочу эти строчки записать в массив string'ов.

вот собственно функция считывания
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
void EditRecord (char *filename)
{
    FILE *f;
    f = fopen(filename,"rt");
    int NumStr =  CountStringInFileOkDa(filename),i=0;  
    string * FileMtr = new string [NumStr];
    string TmpString = NULL;
    ifstream IFile(filename);
    while (IFile)
    {
        IFile >> TmpString >> FileMtr[i]; 
        i++;
    }
    system("cls");
    string search;
    string name,num,dol,date;
    cout << "Редактирование записи" << endl;
    cout << "Введите искомую фамилию для поиска записи в файле" << endl;
    cin >> search;
    string str;
    bool flag = false;
    for(int j=0; j<NumStr; j++)
    {   
        if (FileMtr[j] == search)
        {
            cout << "Записи с значением " << str << " присутсвуют в файле" << endl;
            cout << "Введите новую фамилию ";
            cin >> FileMtr[j];
            cout << "Введите новый номер ";
            cin >> FileMtr[j+1];
            cout << "Введите новую должность ";
            cin >> FileMtr[j+2];
            cout << "Введите новую дату ";
            cin >> FileMtr[j+3];
            j=CountStringInFileOkDa(filename);
            flag = true;
        }
    }
    fclose(f);
    if (flag == false)
        cout << "Не найдено совпадений " << endl;
    else
    {
        f = fopen(filename,"wt");
        ofstream OFile(filename);
        string TmpStr;
        for(int g=0; g<NumStr; g++)
        {
            TmpStr = FileMtr[g];
            OFile << TmpStr << endl;
        }
        fclose(f);
    }
    system("pause");
    system("cls");
    delete [] FileMtr;
}
вот здесь я определяю количество строк для создания массива
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int CountStringInFileOkDa(char *filename)
{
    FILE *f;
    string str;
    int CountStr = 0;
    f = fopen(filename,"rt");
    ifstream IFile(filename);
    while (IFile)
    {
        IFile >> str;
        CountStr++;
    }
    fclose(f);
    return CountStr;
}
пишет ошибку "нарушение прав доступа при чтении"

подозреваю что ошибка кроется вот здесь но не могу исправить
C++
1
2
3
4
5
while (IFile)
    {
        IFile >> TmpString >> FileMtr[i]; 
        i++;
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru