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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
Vasiliusis
41 / 41 / 2
Регистрация: 14.10.2008
Сообщений: 131
#1

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

14.10.2008, 19:54. Просмотров 1733. Ответов 5
Метки нет (Все метки)

Вот такой код. При исполнении возникает ошибка. Нужно копировать строку в элемент массива
Код
#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;
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2008, 19:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужна помощь. Копирование строки файла в элемент массива (C++):

Нужна помощь Строки. - C++
Составить программу вывода последовательности символов ZYYXXX...AA..AA Y на экран.

Нужна помощь в сохранении графа в файл и его загрузки из файла - C++
Вот код. #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; /////////////////////////////////////////////////////////// ...

Копирование массива (строки) в методе класса - C++
У меня есть класс, поле которого массив символов char* В конструкторе копий требуется копировать это поле для нового объекта. Я это...

Копирование содержимого одного файла в другой посредством командной строки - C++
Здравствуйте, Передо мной встала задача написать программу, которая работала бы через командную строку, а именно которой можно было бы...

Определить номер столбца массива, в котором расположен минимальный элемент четвертой строки массива - C++
Доброго времени суток, помогите пожалуйста решить задачи по C++ 3)Дан двумерный массив. Определить: a) номер столбца, в котором...

Сформировать два текстовых файла из целых чисел. Записать в третий файл минимальный элемент первого файла и максимальный элемент второго файла - C++
Тема: работа с текстовыми файлами с использованием стандартных функций библиотеки stdio.h Нужно составить программу: Сформировать два...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Lord_Voodoo
Супер-модератор
8588 / 2188 / 61
Регистрация: 07.03.2007
Сообщений: 10,890
Завершенные тесты: 1
15.10.2008, 11:30 #2
Vasiliusis, а что за ошибка, в каком месте...
0
Vasiliusis
41 / 41 / 2
Регистрация: 14.10.2008
Сообщений: 131
15.10.2008, 13:56  [ТС] #3
Вобщем, вот слабое место, по видимому.
HTML5
1
strcpy(array[i],surnamePtr);
Надо скопировать фамилии в массив, но это не получается.
Если сделать так:
HTML5
1
array[i] = surnamePtr;
тоже ничего не выходит
0
Sergei
1432 / 699 / 41
Регистрация: 22.04.2008
Сообщений: 1,608
15.10.2008, 14:13 #4
А что тебе именно нужно записать в массив какие даные
0
Lord_Voodoo
Супер-модератор
8588 / 2188 / 61
Регистрация: 07.03.2007
Сообщений: 10,890
Завершенные тесты: 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;
}

прога вылетает из-за того, что ты памяти не выделил для строк...
1
Vasiliusis
41 / 41 / 2
Регистрация: 14.10.2008
Сообщений: 131
15.10.2008, 16:15  [ТС] #6
WooDooMan, ГЕНИАЛЬНО!!!!!!!! СПАСИБО ЗА ПОМОЩЬ!!!!! ВСЕ РАБОТАЕТ!!!!!!
СПАСИБО!!!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2008, 16:15
Привет! Вот еще темы с ответами:

Нужна помощь по алгоритму - C++
Подскажите литературу, где можно найти алгоритм поиска всех простых циклов в графе граф задан матрицей смежности. Сам использую поиск в...

нужна помощь с рекурсией. - C++
Ребята, кто мне может объяснить доступно рекурсию на элементарном примере? в интернетах в основном примеры с факториалом. вроде с ним...

Нужна помощь с MD5 на Си/Си++ - C++
Мне нужны либо библиотеки, в которых реализована функция-аналог md5() на PHP, либо код. Но библиотеки для висуалс++ не предлагать. Также...

Нужна помощь с циклами - C++
Помогите, пожалуйста, нету никаких идей. Пользователь вводит число. Показать сколько в данном числе чисел и сумму этих чисел. Нужно...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.10.2008, 16:15
Ответ Создать тему
Опции темы

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