그래서 문자 (문자 및 공백)의 C 문자열을 C 문자열의 2 차원 배열로 변환해야합니다. 2D 배열의 각 "행"은 문자와 문자로 구성되어야합니다. 필자는 본질적으로 문장의 단어를 가져 와서 배열을 만들어야합니다.c-string에서 c-strings의 2D 배열로 단어 복사
예를 들면 : "내 브랜드의 BMW리스가 도난 당했을 때"는 "im", "upset", "that", "on", "nov"와 같은 2 차원 C- 문자열 배열로 바뀌어야합니다. ","th ","my ","brandnew ","bmw ","lis ","were ","stolen " (공지 사항 "일"과 "내"& "내"와 "BRANDNEW"사이에 두 개의 공백 문자가 있다는 것을)
다음 코드는 나에게 내 콘솔에서 몇 가지 흥미로운 출력을 제공합니다 ...
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;
}
산출물에 이상한 물건이 있습니다. 나는 그것이 무엇을 의미하는지 알지 못한다. 이 문제를 해결하도록 도와 주시겠습니까? 2 차원 배열에 복사하여 C 문자열의 끝에 종료 널 문자를 추가
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도 초기화해야합니다. –