Поэтому мне нужно превратить c-строку символов (букв и пробелов) в двумерный массив c-строк. Каждая «строка» 2D-массива должна состоять из букв и только букв. По сути, мне нужно взять слова предложения и сделать из них массив.Скопировать слова из c-строки в 2D-массив c-строк
Например: «Я расстроен тем, что на нове мой брендновый bmw lis был украден» должен быть превращен в массив 2d c-string, такой как: «im», «upset», «that», «on», «nov », "е", "мой", "совершенно новый,", "БМВ", "лис", "были", "украден". (Обратите внимание, что есть два пробела между «е» и «мой» & «мой» и «совершенно новый,»)
Следующий код дает мне какой-нибудь интересный вывод в моей консоли ...
char document[201] = "im upset that on nov th my brandnew bmw lis were stolen";
char documentArray[13][201];
for (int i, k, j = 0;document[k] != '\0';)
{
if (isspace(document[k]))
{
cout << "found a space" << endl;
k++;
while (isspace(document[k]))
{
k++;
}
i++;
j = 0;
}
if (isalpha(document[k]))
{
documentArray[i][j] = document[k];
k++;
j++;
}
}
for (int i = 0; i < maxWords +1; i++)
{
cout << documentArray[i] << endl;
}
Полученный результат имеет в себе какие-то странные вещи. Я не знаю, что это значит (если бы вы могли сказать мне, что это было бы потрясающе). Не могли бы вы помочь мне решить эту проблему?
Вот консольный вывод:
im\203\377
upset
that
on
nov
th
my\3261
brandnew
bmw_\377
lis
were
stolen\301$r\377
\377
'k' не инициализирован,' document [k]! = '\ 0'' является неопределенным поведением. – AlexD
Вы правы. k явно не инициализируется. Я считаю, что он должен по умолчанию 0 (возможно, не надежно, хотя), тем более, что вывод, похоже, указывает на то, что он работает. – Sam
documentArray также должен быть инициализирован. –