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

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

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

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

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

Нужна помощь Строки. - 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) номер столбца, в котором...

CALLBACK. Нужна помощь - C++
Всем привет! Есть такой код: class ExpressionCalculator { private: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,868
Завершенные тесты: 1
15.10.2008, 11:30     Нужна помощь. Копирование строки файла в элемент массива #2
Vasiliusis, а что за ошибка, в каком месте...
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;
тоже ничего не выходит
Sergei
1429 / 696 / 41
Регистрация: 22.04.2008
Сообщений: 1,608
15.10.2008, 14:13     Нужна помощь. Копирование строки файла в элемент массива #4
А что тебе именно нужно записать в массив какие даные
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,868
Завершенные тесты: 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;
}

прога вылетает из-за того, что ты памяти не выделил для строк...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2008, 16:15     Нужна помощь. Копирование строки файла в элемент массива
Еще ссылки по теме:

Нужна помощь с комментариями. - C++
Нужны комментарии и сделать так, чтобы вводилось только пятизначное число. #include &quot;stdafx.h&quot; #include &lt;stdlib.h&gt; #include...

Нужна помощь с ассемблером. - C++
Пыталась сама написать, да что-то не очень у меня получается. Задание состоит в том, чтобы найти минимальное положительное число в...

Нужна помощь в исправлении - C++
эта программа расчитывает значения отрезка интегрирования (x1, x2) один для всех трех интегралов, помогите сделать так, чтобы нужно было...

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

нужна помощь по л.р. (вопросы) - C++
значит ниже задания, в 3. и 4. нужно найти ошибки а рядом написать правильный вариант : 2. Чему равен результат выражения: x =...

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


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

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

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