PTA C语言 7-17 说反话加强版

问题遇到的现象和发生背景

PTA C语言 7-17 说反话加强版

用代码块功能插入代码,请勿粘贴截图

#include
#include
int main()
{
char str[500001]; char p[1000][500];
int i,m,j,n,t,len;
m=0;n=0;t=0;
gets(str);
len=strlen(str);
for(i=0;i
{
while(str[i]!=' '&&str[i]!='\0')
{i++;}
for(j=n;j
{ p[m][t]=str[j];
t++;
}
p[m][t]=0;
m++;t=0;
while(str[i]==' ')
{i++;}
n=i;
}
for(i=1;p[m][i]!=0;i++)
printf("%c",p[m][i]);
for(int k=m-1;k>0;k--)
{ printf("%s ",p[k]);
}
printf("%s",p[0]);
return 0;
}

运行结果及报错内容

样例都是没有问题的,但是结果提交的时候总是会出现格式错误

我的解答思路和尝试过的方法

以为是最后的换行问题,但是修改之后没有效果

我想要达到的结果

希望可以帮我看看错在哪里吗

修改处见注释,供参考:

#include <stdio.h>
#include <string.h>
int main()
{
    char str[500001]; char p[1000][500];
    int i, m, j, n, t, len;
    m = 0; n = 0; t = 0;
    gets_s(str);
    len = strlen(str);
    for (i = 0; i < len; ) //i++) 修改
    {
        while (str[i] != ' ' && str[i] != '\0')
        {
            i++;
        }
        if (i > 0) {     // 修改
            for (j = n; j < i; j++)
            {
                p[m][t] = str[j];
                t++;
            }
            p[m][t] = 0;
            m++; t = 0;
        }
        while (str[i] == ' ')
        {
            i++;
        }
        n = i;
    }
    //for (i = 1; p[m][i] != 0; i++) 修改
    //    printf("%c", p[m][i]);
    for (int k = m - 1; k > 0; k--)
    {
        printf("%s ", p[k]);
    }
    printf("%s", p[0]);
    return 0;
}