Другие языки программирования и технологии

c++, массивы, строки

Поможет кто-нибудь все-таки? Нужно из char* msg[1024] взять символ, идущий, например, третий по счету.
В массиве именно строчка, и именно со звездочкой.
Нужно просто взять символ из этой строки.
Вероятно ты переделываешь существующий код, потому как не можешь написать свой.

Этот char * msg[1024] может хранить 1024 указателя на неизвестные строки.
Ключевое слово неизвестные - указатель хранит адрес в памяти и может указывать на что угодно.
Будь то статическая строка, динамически выделенная, нулевой адрес или какой-то мусор, просто там оказавшийся.

Чтобы получить одну из таких строк нужно обратиться к ней по индексу:

char * id = msg[0]; // Первая строка.
char * id = msg[1024 - 1]; // Последняя строка.

Чтобы получить третий символ такой строки можно сделать следующее:

char с = id[3 - 1];

Или без id так:

char с = msg[0][3 - 1]; // Третий символ первой строки.
char с = msg[1024 - 1][3 - 1]; // Третий символ последней строки.

Однако, не факт, что указатель указывает на строку или что в этой строке есть третий символ.
Cергей Тройнин
Cергей Тройнин
44 389
Лучший ответ
Да тебе уже задолбались отвечать, что char* msg[1024] - массив указателей на строки, откуда там третий по счету символ?
Если коробки упакованы в пакеты и у тебя есть куча пакетов - то как взять третью по счету коробку? Это третья из первого пакета или первая из третьего? А если в третьем вообще нет коробок, что тогда делать?
Антай *********
Антай *********
91 602
#include iostream
using namespace std;

int main(){

char *str[2] = {"hello","world"};
// двумерный массив
// на две строки и неуказанным количеством символов
// str[2][*] = str[2][]

// в первом слове берём вторую букву
cout << str[0][1];

cin.get();
return 0;
}
Денис Гензик
Денис Гензик
83 061
ну просто пишешь msg[N], где N - индекс, хоть msg[3], хоть msg[0]