我已经将示例代码编写为字符串转换为单词,但无法理解为什么输出仅作为我的输出。 下面帮我解释为什么会发生这种情况。
//g++ 5.4.0
#include <iostream>
#include <string>
using namespace std;
int main()
{
char abc[20] = "My name is abc";
char result[5][10]= {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0} };
int k = 0,j=0;
for (int i =0; abc[i]!='\0'; i++,j++)
{
result[k][j] = abc[i];
if (abc[i] == ' ')
{
result[k][j] = '\0';
cout<<result[k]<<endl;
k++;
j=0;
}
}
}
以下代码的输出将成为我的唯一不在My之后的下一个单词。 结果[k](如果条件内)只返回我的下一个词。
答案 0 :(得分:0)
每个循环都有j++
,因此j=0
在下一个循环中设置为j=1
。
对于每result[k][0] = 0
,这会导致k>0
。
还需要处理abc[i] = '\0'
案件,否则不会出现最后一句话。
for (int i =0; ; i++,j++) {
result[k][j] = abc[i];
if (abc[i] == ' ' || abc[i] == '\0') {
result[k][j] = '\0';·
cout<<result[k]<<endl;
k++;
j=-1;
}
if (abc[i] == '\0') break;
}
答案 1 :(得分:0)
制作
j = -1;
在if语句中。休息你可以搞清楚。