一串字符数组进行倒序

输入
输入只有一组数据。

第一行,一个整数N(1<=N<=10000),表示名单上有N个人的名字。

接下来N行,每行一个字符串,表示一个人的名字。字符串只包含大小写字母。

输出
输出N行,将名单上的名字倒序输出。

样例输入Copy
6
Harry
Voldemort
Malfoy
Hermione
Caoerzhe
Black
样例输出Copy
Black
Caoerzhe
Hermione
Malfoy
Voldemort
Harry
怎么做?

供参考:

#include <stdio.h>
int main()
{
    char str[10001][30];
    int  i = 0, N;
    scanf("%d", &N);
    getchar();
    while (N--){
        gets(str[i]);
        i++;
    }
    while (i--)
        puts(str[i]);
    return 0;
}

反正无非就两种思路
1.先存个数组里,循环写入,完毕后倒序循环打印
2.写个递归,先scanf然后递归最后printf
递归代码:

#include<stdio.h>

void func(int n)
{
    char s[1000];
    if(n){
        scanf("%s",s);
        func(n-1);
        printf("%s\n",s);
    }

}

int main()
{
    int n;
    scanf("%d", &n);
    func(n);
}