单词的逆置的问题,为啥我这个代码显示段错误,求大家看看

输入一个可能包含若干(至少1个)单词的句子(可以假设每个单词之间有且仅有一个空格,标点符号视为单词的组成部分),输出每个单词逆置后的英文句子(参看样例输出)。

输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据输入一个字符串(长度不超过80),表示英文句子。

输出格式:
对于每组测试,输出每个单词逆置后的英文句子。

输入样例:
1
emoclew era uoY
输出样例:
welcome are You

#include<stdio.h>
#include<string.h>
int main() {
    char a ,str[10] = { 0 };
    int t;
    scanf("%d", &t);
    for (int i = 1; i <= t; i++) {
        int c = 0, j = 0;
        if (i == 1)
            a = getchar();
        while ((a = getchar()) != '\n') {
            str[j] = a;
            c++;
            j++;
            if (a == ' ') {
                for (int x = c - 2; x >= 0; x--) {
                    printf("%c", str[x]);
                }
                strcpy(str,"");
                j = 0;
                c = 0;
                printf(" ");
            }
        }
        if (a == '\n' && j != 0) {
            for (int x = c - 1; x >= 0; x--) {
                printf("%c", str[x]);
            }
            strcpy(str,"");
            printf("\n");
        }
    }
}

如有用请采纳

#include<stdio.h>
#include<string.h>
int main() {
    char a ,str[100] = { 0 };
    int t;
    scanf("%d", &t);
    for (int i = 1; i <= t; i++) {
        int c = 0, j = 0;
        if (i == 1)
            a = getchar();
        while ((a = getchar()) != '\n') {
            str[j] = a;
            c++;
            j++;
            if (a == ' ') {
                for (int x = c - 2; x >= 0; x--) {
                    printf("%c", str[x]);
                }
                strcpy(str,"");
                j = 0;
                c = 0;
                printf(" ");
            }
        }
        if (a == '\n' && j != 0) {
            for (int x = c - 1; x >= 0; x--) {
                printf("%c", str[x]);
            }
            strcpy(str,"");
            printf("\n");
        }
    }
}

加个return