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

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

Восстановить пароль Регистрация
 
damnare
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 18
15.12.2012, 02:31     Запись из файла в динам. массив #1
Доброго времени суток. суть - есть файлик, в нем строчки, я хочу эти строчки записать в массив 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++;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2012, 02:31     Запись из файла в динам. массив
Посмотрите здесь:

Запись из файла в массив C++
C++ Добавление элементов в динам. массив с последующей сортировкой
Правильное чтение символов в динам. массив C++
Динам. массив в классе C++
C++ Одномерный динам массив
Запись файла в байтовый массив C++
C++ Запись файла в массив С++
C++ Запись из файла в массив

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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