Страницы

Поиск по вопросам

вторник, 27 ноября 2018 г.

Почему каждый раз перезаписывается значение в двумерном массиве строк?

Необходима помощь в следующем:
char * UserData[4] = { new char[50], new char[50], new char[13], new char[4] }; char *** phoneBook = new char ** [10];
phoneBook[0] = UserData; gets(UserData[0]); gets(UserData[1]); gets(UserData[2]); gets(UserData[3]);
cout << phoneBook[0][2] << " Test string 1

"; // Вывод стоки, здесь все хорошо.
phoneBook[1] = UserData; gets(UserData[0]); gets(UserData[1]); gets(UserData[2]); gets(UserData[3]);
// Вывод стоки, здесь всё хорошо. cout << phoneBook[1][3] << " Test string 2

"; // Значение перезаписалось! Почему? cout << phoneBook[0][2] << " Test string 1

WHY IS IT CHANGING???";
Проблема в том, что я как бы "перезаписываю" каждый раз значения, которые вводил с клавиатуры. Мне нужно сделать так, чтобы я имел возможность ввести массив данных 1, потом массив данных 2 и потом сделать их вывод например. Как это можно сделать?


Ответ

Указатели phoneBook ссылаются на один и тот же массив.
phoneBook[0] = UserData; phoneBook[1] = UserData;
Вам нужна структура Например:
struct phoneBookStruct{ char UserData0[50]; char UserData1[50]; char UserData2[13]; char UserData3[4]; }
Вот её вы можете использовать как массив
phoneBookStruct phoneBook[10];
gets(phoneBook[0].UserData0); gets(phoneBook[0].UserData1); gets(phoneBook[0].UserData2); gets(phoneBook[0].UserData3);
cout<gets(phoneBook[1].UserData0); gets(phoneBook[1].UserData1); gets(phoneBook[1].UserData2); gets(phoneBook[1].UserData3);
cout<

Комментариев нет:

Отправить комментарий