C 读取字符串短语并将单词放入多维数组

C 读取字符串短语并将单词放入多维数组,c,C,我试图读取一个字符串,并将短语字符串中的每个单词放入多维数组中,分隔符字符是空格 有些代码似乎可以工作,但最后一个字没有存储在数组中 输入: $string 1:pop 输出 流行音乐 完整字符串:pop 第一:流行音乐 第二名:流行音乐 第三名:流行音乐 第四: 空间数:3 问题似乎在for循环中,我应该使用ibecause,而t[k]!=''{over run.Check不足。在第三个空格后不停止。访问超出了数组的有效范围。请在t[k]&&t[k]!='{pop-pop表示{p'、'o'、'

我试图读取一个字符串,并将短语字符串中的每个单词放入多维数组中,分隔符字符是空格

有些代码似乎可以工作,但最后一个字没有存储在数组中

输入:

$string 1:pop

输出

流行音乐

完整字符串:pop

第一:流行音乐

第二名:流行音乐

第三名:流行音乐

第四:

空间数:3


问题似乎在for循环中,我应该使用ibecause,而t[k]!=''{over run.Check不足。在第三个空格后不停止。访问超出了数组的有效范围。请在t[k]&&t[k]!='{pop-pop表示{p'、'o'、'p'、'o'、'p'、'\0'}.\0'等于0并计算为false。而t[k]&&t[k]!='{而t[k]!='\0'&&t[k]!='{两者都将起作用。它们被视为相同。
int countS (char s[]){
    int i,k;

    i=0;
    k=0;

    while(s[i]!='\0'){
        if((int) s[i]==32){
            k++;
        }
        i++;
    }

    return k;
}

int main () {
    int i, k, j, space;
    char t[100];
    printf("string 1:  \n");
    scanf("%100[0-9a-zA-Z ]", t);
    space = countS(t);
    char s[space+1][10];


    for(i=0, k=0; i<space; i++){
        j=0;
        while (t[k]!=' '){
            s[i][j]=t[k];
            j++;
            k++;
        }
        k++;
        s[i][j]='\0';
    }

    printf("Full String:%s\n1st Word:%s \n2nd word:%s \n3rd word:%s \n4th Word:%s \n number of spaces: %d \n", t,s[0],s[1],s[2],s[3], countS(t));
}