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

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

Войти
Регистрация
Восстановить пароль
 
Sanuamba
0 / 0 / 0
Регистрация: 20.09.2013
Сообщений: 10
#1

Запись строки в массив - C++

12.10.2013, 19:48. Просмотров 482. Ответов 6
Метки нет (Все метки)

Программой запрашиваются имя, телефон и комментарий:

C++
1
2
3
4
5
6
7
8
9
cout<<"Put full name: ";
cin>>name;
            
cout<<"Put phone number (only 7 numbers!!): ";
cin>>phone;
 
                
cout<<"Put comments: ";
cin>>comments;
После, вся эта информация в виде строки должна укладоваться в каталог:
C++
1
catalog[i]=(name +" "+phone+" "+comments);
но этого не происходит, ошибка: error C2440: =: невозможно преобразовать "char *" в "char". Как иначе поместить информацию в каталог?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2013, 19:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запись строки в массив (C++):

Ввод и запись строки в массив - C++
Есть структура : struct SOT { char fio; int godr; char pol; int srab; int oklad; };

Запись каждой строки файла в свой массив - C++
Есть файл, там допустим вот так: 1 2 3 4 5 6 7 8 9 9 Первую строку записать хочу в один массив, вторую во второй, хочу через...

введением - выводом строк!! не правильная запись строки в массив!!!! - C++
сами смотрите на код! по - ходу все правильно!!!! прога в массив записывает только первое из слов,тех что я ввожу з клавы, до пробела!!!!!...

Запись строки char в массив char - C++
Глупый вопрос, но что поделать, многое забыл... Хочу записть строку типа char в массив строк типа char, но выдает ошибку что &quot;невозможно...

Чтение через fscanf_s части строки с пробелом (и запись этой же строки) - C++
нужно записать в файл строку, содержащую через табуляцию int, char, char, char, float, int. Далее необходимо из такой же строки вывести...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0x10
2464 / 1636 / 238
Регистрация: 24.11.2012
Сообщений: 4,031
12.10.2013, 19:54 #2
И никакой информации о типах...
Для конкатенации строк используйте либо std::stringstream, либо строки хранить как std::string. Я так понимаю, в примере они объявлены как обычные массиввы.
0
Гром
210 / 129 / 11
Регистрация: 20.03.2009
Сообщений: 1,103
Записей в блоге: 16
Завершенные тесты: 1
12.10.2013, 19:56 #3
Покажите объявление всех этих каталогов, имен и телефонов.
0
Sanuamba
0 / 0 / 0
Регистрация: 20.09.2013
Сообщений: 10
12.10.2013, 20:29  [ТС] #4
Весь код:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include<iostream>
#include <fstream>
#include <iomanip>
using namespace std;
 
void add_element(char* name, int phone, char* comments)//добавляем эллементы в строку
{
            int j=0;
            int rest=0;
            int i;
            cout<<"Put full name: ";
            cin>>name;
            do
            {
                i=0;
                cout<<"Put phone number (only 7 numbers!!): ";
                cin>>phone;
 
                int phone2=phone;
                while(phone2>0)//считаем колличество цифр в phone
                {
                    phone2/=10;
                    i++;
                }
 
                if(i<7 || i>7)
                {
                    cout<<"Incorrect phone number!"<<endl;
                    j=1;
                }
                else if(i==7)
                {
                    j=2;
                }
            }
            while(j != 2);
            cout<<"Put comments: ";
            cin>>comments;
            cout<<endl;
 
            int checked_out;
            char catalog[50];
            int p=0;
            catalog[p]=(name,phone,comments);
            p++;
            checked_out=1;
            cout<<"Имя: "<<name<<endl;
            cout<<"Телефон: "<<phone<<endl;
            cout<<"Комментарии: "<<comments<<endl;
 
 
}
 
 
int main()
{
    setlocale(LC_ALL, "Russian");//для русского языка
    int phone=0;
    char name[20];
    char comments[50];
    char catalog[50];//сама телефонная книга
 
    int i=0;
    int number=0;
        int numb_row=0;
        int choice=0;
        do
        {
            cout<<"*****Phone Book*****"<<endl;
            cout<<"1) Add New Record"<<endl;
            cout<<"2) Display a Record"<<endl;
            cout<<"3) Display all Records"<<endl;
            cout<<"4) Change the number of the row"<<endl;
            cout<<"5) Exit"<<endl;
            cout<<"Choose your choice : ";
            cin>>choice;
            switch(choice){
            case 1:
                {
                    cout<<"Set information: "<<endl;
                    add_element(name,phone,comments);
                }
                break;
                
                        
        }
            system("pause");
            system("cls");//очистка экрана
    }
        while(choice != 0);
        return 0;
}
Добавлено через 25 минут
Гром,
0
Гром
210 / 129 / 11
Регистрация: 20.03.2009
Сообщений: 1,103
Записей в блоге: 16
Завершенные тесты: 1
12.10.2013, 20:45 #5
Может, вам структуру использовать?
Если нет, то можно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void DataToString(char* name, int phone, char* comments, char* dest)
 {
 strcpy(dest, name);
 char phoneStr[10];
 itoa(phone, phoneStr, 10);
 strcat(dest, phoneStr);
 strcat(dest, comments);
 }
//...
char dataStr[256];
DataToString(name, phone, comments, dataStr);
strcat(catalog, dataStr);
1
Sanuamba
0 / 0 / 0
Регистрация: 20.09.2013
Сообщений: 10
13.10.2013, 17:08  [ТС] #6
Гром, Проблема в том что в этом коде
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 
void DataToString(char* name, int phone, char* comments, char* dest)
 {
 strcpy(dest, name);
 char phoneStr[10];
 itoa(phone, phoneStr, 10);
 strcat(dest, phoneStr);
 strcat(dest, comments);
 }
//...
char dataStr[256];
DataToString(name, phone, comments, dataStr);
strcat(catalog, dataStr);
все переменные записываются в одну строку, но без разделения. И данные (имя,телефон,коммент) будут вводиться несколько раз и все они должны сохраняться в разных элементах массива.
0
Гром
210 / 129 / 11
Регистрация: 20.03.2009
Сообщений: 1,103
Записей в блоге: 16
Завершенные тесты: 1
13.10.2013, 17:24 #7
Ну да, забыл дописывать между ними разделители. В принципе можно просто
C++
1
sprintf(catalog[i], "Name: %s\tPhone: %d\tComments: %s", name, phone, comments);
и сделать catalog массивом строк:
C++
1
char catalog[10][1024];   //10 строк длиной в 1024 символа; можете динамически выделять память
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2013, 17:24
Привет! Вот еще темы с ответами:

Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк - C++
Есть динамический массив строк. Заполняется, т.е. размер его уже известен будет. Но дальше нужно сделать задание: &quot;Добавить строки, начиная...

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

Запись строки - C++
Надо записать строку в конец файла , Незнаю как ее написать.. void zap(char *str) { ofstream r(ios::app); Как мне...

Дан безразмерный массив.Вставить количество символов каждой строки вначало этой же строки. - C++
Массив считывается из файла,а в проге указывается как указатель на указатель **.Запуск программы+файла происходит из командной строки.Если...


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

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

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