pta说反话加强版 按照其他人的代码写总是编译错误,听CSDN上的建议改了gets函数结果还是报错,试了几个代码都是一样,为什么啊

因为我不会写这个代码就在CSDN搜了其他人写的,没看懂,然后想着先试一个正确答案出来再慢慢研究,结果就发现gets函数被弃用,然后按照其他人的建议改成了fgets函数,结果编译器还是报错,然后又分别改成了gets_s函数也没用,希望各位可以帮忙看看为什么,顺便给我讲解一下这个题目🙏

img

img

img

#include<stdio.h>
#include<string.h>
int main()
{
    char c[500001], word[250001];
    int j = 0, flag = 0;
    gets(c);
    for (int i = strlen(c) - 1; i >= 0; i--)
    {
        if (c[i] == ' ')
        {
            flag++;
            word[j] = '\0';
            if (flag == 1)
            {
                for (int k = strlen(word) - 1; k >= 0; k--)
                    printf("%c", word[k]);
                if (strlen(word))
                    for (int k = i; k >= 0; k--)  //防止前面都是空格
                        if (c[k] != ' ')
                        {
                            putchar(' ');
                            break;
                        }
            }
            j = 0;
        }
        else
        {
            word[j++] = c[i];
            flag = 0;
        }
    }
    word[j] = '\0';
    for (int k = strlen(word) - 1; k >= 0; k--)
        printf("%c", word[k]);

    return 0;
}


为啥不用scanf读取字符串嘞?
内容明天再看吧,先睡了hhh

供参考:https://www.codeleading.com/article/92651880282/