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

Нужна помощь. Копирование строки файла в элемент массива - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
Vasiliusis
37 / 37 / 0
Регистрация: 14.10.2008
Сообщений: 127
14.10.2008, 19:54     Нужна помощь. Копирование строки файла в элемент массива #1
Вот такой код. При исполнении возникает ошибка. Нужно копировать строку в элемент массива
Код
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

class Record
{
public:
    string surname;
    string birthday;
    string address;

    void clearFile()
    {
        ofstream clear;
        clear.open("file.txt");
        clear.close();
    }

    void setElements(string name, string date, string location)
    {
        surname = name;
        birthday = date;
        address = location;
        writeToFile();
    }

    void writeToFile()
    {
        ofstream toFile;
        toFile.open("file.txt", ios::app);
        toFile<<surname<<" "<<birthday<<" "<<address<<endl;
        toFile.close();
    }

    void tokenize(char* array[])
    {
        char buffer[100];
        char *surnamePtr;
        unsigned i = 1;

        ifstream readFromFile;
        readFromFile.open("file.txt");

        while (i != 8)
        {
            readFromFile.getline(buffer, 99);
            surnamePtr = strtok(buffer, " ");
            strcpy(array[i],surnamePtr);
            cout<<array[i]<<endl;
            i++;
        }




        readFromFile.close();
    }
};

void main()
{
    char* surnames[20];

    for (int j = 0; j < 20; j++)
        surnames[j] = "0";

    Record myRecord;
    myRecord.clearFile();
    myRecord.setElements("Caine ","5/5/88 ","Peace Street, 12");
    myRecord.setElements("Grissom", "8/17/56", "Las Vegas, NV");
    myRecord.setElements("Griss", "9/1/65", "San Antonio, TX");
    myRecord.setElements("Delko ","1/1/90 ","Garlem Street, 72");
    myRecord.setElements("Brown ","10/12/56 ","Linkoln Street, 89");
    myRecord.setElements("Albert ","12/8/91 ","Wall Street, 78");
    myRecord.setElements("Brass ","15/6/78 ","Main Street, 7");
    myRecord.tokenize(surnames);

    cout<<endl<<endl<<endl;

    for (int i = 0; i < 7; i++)
    {
        cout<<surnames[i]<<endl;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2008, 19:54     Нужна помощь. Копирование строки файла в элемент массива
Посмотрите здесь:

нужна помощь по л.р. (вопросы) C++
Нужна помощь Строки. C++
CALLBACK. Нужна помощь C++
Нужна помощь с циклами C++
нужна помощь с рекурсией. C++
C++ Нужна помощь с ассемблером.
C++ Копирование содержимого одного файла в другой посредством командной строки
C++ Нужна помощь по алгоритму
C++ Сформировать два текстовых файла из целых чисел. Записать в третий файл минимальный элемент первого файла и максимальный элемент второго файла
C++ Копирование массива (строки) в методе класса
Определить номер столбца массива, в котором расположен минимальный элемент четвертой строки массива C++
Нужна помощь в сохранении графа в файл и его загрузки из файла C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8506 / 2173 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
15.10.2008, 11:30     Нужна помощь. Копирование строки файла в элемент массива #2
Vasiliusis, а что за ошибка, в каком месте...
Vasiliusis
37 / 37 / 0
Регистрация: 14.10.2008
Сообщений: 127
15.10.2008, 13:56  [ТС]     Нужна помощь. Копирование строки файла в элемент массива #3
Вобщем, вот слабое место, по видимому.
HTML5
1
strcpy(array[i],surnamePtr);
Надо скопировать фамилии в массив, но это не получается.
Если сделать так:
HTML5
1
array[i] = surnamePtr;
тоже ничего не выходит
Sergei
 Аватар для Sergei
1424 / 691 / 40
Регистрация: 22.04.2008
Сообщений: 1,608
15.10.2008, 14:13     Нужна помощь. Копирование строки файла в элемент массива #4
А что тебе именно нужно записать в массив какие даные
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8506 / 2173 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
15.10.2008, 15:30     Нужна помощь. Копирование строки файла в элемент массива #5
Vasiliusis, немного подкорректировал твой код, заработало
необходимо:
Код
 
    void tokenize(string array[])
    {
        char buffer[100];
        char *surnamePtr;
        unsigned i = 0;
 
        ifstream readFromFile;
        readFromFile.open("file.txt");
        while (i != 7)
        {
            readFromFile.getline(buffer, 99);
            surnamePtr = strtok(buffer, " ");
            array[i] = surnamePtr;
            cout<<array[i]<<endl;
            i++;
        }
        readFromFile.close();
    }
};
 
int main()
{
    string* surnames = new string[20];
    for (int j = 0; j < 20; j++){
        surnames[j] = "";
    }
    Record myRecord;
    myRecord.clearFile();
    myRecord.setElements("Caine ","5/5/88 ","Peace Street, 12");
    myRecord.setElements("Grissom", "8/17/56", "Las Vegas, NV");
    myRecord.setElements("Griss", "9/1/65", "San Antonio, TX");
    myRecord.setElements("Delko ","1/1/90 ","Garlem Street, 72");
    myRecord.setElements("Brown ","10/12/56 ","Linkoln Street, 89");
    myRecord.setElements("Albert ","12/8/91 ","Wall Street, 78");
    myRecord.setElements("Brass ","15/6/78 ","Main Street, 7");
    myRecord.tokenize(surnames);
    cout<<endl<<endl<<endl;
 
    for (int i = 0; i < 7; i++)
    {
        cout<<surnames[i]<<endl;
    }
    return 0;
}
или
Код
 
    void tokenize(char* array[])
    {
        char buffer[100];
        char *surnamePtr;
        unsigned i = 0;
 
        ifstream readFromFile;
        readFromFile.open("file.txt");
        while (i != 7)
        {
            readFromFile.getline(buffer, 99);
            surnamePtr = strtok(buffer, " ");
            strcpy(array[i],surnamePtr);
            cout<<array[i]<<endl;
            i++;
        }
 
 
 

        readFromFile.close();
    }
};
 
int main()
{
    char* surnames[20];
    for (int j = 0; j < 20; j++){
        surnames[j] = new char[20];
        memset(surnames[j], ' ', 20);
    }
    Record myRecord;
    myRecord.clearFile();
    myRecord.setElements("Caine ","5/5/88 ","Peace Street, 12");
    myRecord.setElements("Grissom", "8/17/56", "Las Vegas, NV");
    myRecord.setElements("Griss", "9/1/65", "San Antonio, TX");
    myRecord.setElements("Delko ","1/1/90 ","Garlem Street, 72");
    myRecord.setElements("Brown ","10/12/56 ","Linkoln Street, 89");
    myRecord.setElements("Albert ","12/8/91 ","Wall Street, 78");
    myRecord.setElements("Brass ","15/6/78 ","Main Street, 7");
    myRecord.tokenize(surnames);
    cout<<endl<<endl<<endl;
 
    for (int i = 0; i < 7; i++)
    {
        cout<<surnames[i]<<endl;
    }
    return 0;
}

прога вылетает из-за того, что ты памяти не выделил для строк...
Vasiliusis
37 / 37 / 0
Регистрация: 14.10.2008
Сообщений: 127
15.10.2008, 16:15  [ТС]     Нужна помощь. Копирование строки файла в элемент массива #6
WooDooMan, ГЕНИАЛЬНО!!!!!!!! СПАСИБО ЗА ПОМОЩЬ!!!!! ВСЕ РАБОТАЕТ!!!!!!
СПАСИБО!!!!
Yandex
Объявления
15.10.2008, 16:15     Нужна помощь. Копирование строки файла в элемент массива
Ответ Создать тему
Опции темы

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