我在C ++中写下了一段代码,使单词从字符串输入中出现在数组中。 但它不会因溢出或其他原因而起作用。但编译器没有显示任何错误。
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
char a[100];
gets(a);
char b[100][100];
int I=0;
for(int j=0;j<strlen(a);j++) //runs the loop for words
{
int k=0;
do
{
b[I][k]=a[j];
k++;
}
while(a[j]!=' ');
I++;
}
cout<<b[0][0];
return 0;
}
答案 0 :(得分:7)
如果您要使用C字符串,则需要在每个字符串的末尾添加一个空终止符
do {
b[I][k]=a[j];
k++;
} while(j+k<strlen(a) && a[j+k]!=' ');
b[I][k] = '\0';
正如ppeterka所说,你还需要改变循环退出条件以避免无限循环。
另请注意,在此处和代码中重复调用strlen
是浪费的。您应该考虑在for
循环之前计算一次。
答案 1 :(得分:0)
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
char a[100];
gets(a);
char b[100][100];
int I=0;
int j =0;
while(j< 100) //runs the loop for words
{
int k=0;
do
{
b[I][k]=a[j+k];
k++;
} while(a[j+k]!=' ');
b[I][k+1] = '/0';
I++;
j= j+k;
}
cout<<b[0][0];
return 0;
}