-9

我已经用 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;
}
4

2 回答 2

7

如果要使用 C 字符串,则需要在每个字符串的末尾添加一个空终止符

do {
    b[I][k]=a[j];
    k++;
} while(j+k<strlen(a) && a[j+k]!=' ');
b[I][k] = '\0';

正如 ppeterka 所指出的,您还需要更改循环退出条件以避免无限循环。

另请注意,对strlen此处和代码中的重复调用是浪费的。您应该考虑在for循环之前计算一次。

于 2013-09-03T15:35:28.967 回答
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;
}
于 2013-09-03T15:39:36.173 回答