C 输入数个字串 将输入顺序颠倒输出 求大神帮忙

利用scanf("%d",&n);表示要输入字串的个数
若输入3,接下来输入三个字串如
hello
my
friend
则输出为
friend
my

hello

#include
int main(){
int n, c, d;
char a[100], b[100];
printf("Enter the number of elements in array\n");
scanf("%d", &n);
printf("Enter array elements\n");
for (c = 0; c < n ; c++)
gets(a);
for (c = n - 1, d = 0; c >= 0; c--, d++)
b[d] = a[c];
for (c = 0; c < n; c++)
a[c] = b[c];
printf("The array after reversal:\n");
for (c = 0; c < n; c++)
printf("%s\n", a);
return 0;

}

请问上面的程式错在哪呢?
应该怎么写出这个题目的完整程式呢?

string s = "hello my friend";
s = string.Join(" ", s.Split(' ').Reverse().ToArray());