请问为什么这个程序在DVC++上可以正确跑出来,而在gcc上跑不出来

说反话PTA乙级1009

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:

每个测试用例的输出占一行,输出倒序后的句子。

#include<stdio.h>
#include<string.h>
int main()
{
    char word[81];
    int cnt[81] = {-1,0};//定义一个位置,方便求后期单个单词的长度
    int i,k = 0,count = 0;
    scanf("%[^\n]",word);

    for(i = 0;i < 81;i++){
        if(word[i] == ' ')
        {
            count++;
            cnt[count] = i;
            
        }
        if(word[i] == '\0')
        {
            count++;
            cnt[count] = i;
            break;
        }
    }
    int len[count];
    for(i = 0;i < count;i++){
        len[i] = cnt[i + 1] - cnt[i];
    }    

    char string[count - 1][81];//把字符串拆成几个小字符串
    for(i = 0;i < count;i++){
        int j = 0;
        for(j;j < len[i];j++){
            string[i][j] = word[k++];
            if(word[k] == ' ')
            {
                k++;
                string[i][j + 1] = '\0';
                break;
            }
        }
    }
    while(count--)
    {
        printf("%s%c",string[count],count?'\0':' ');
    }
    
    return 0;
}

输出结果:
DVC++:
img
gcc:
img

scanf("%[^\n]",word);

改成

gets(word);

printf("%s%c",string[count],count?'\0':' ');

改成

printf("%s%s",string[count],count?" ":"");

img
如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮