句子输出,字符串怎么加到数组里,不会做了!

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

img

int main()
{
    int n,i;
    scanf("%d",&n);
    int x[i],y;
    char c[30],b[n][30];
    for(i=0;i<n;i++){
        scanf("%s",c);
        b[i]=c;
    }
    scanf("%d",&x[0]);
    for(i=1;i<n;i++){
        if(x[i-1]>=0&&x[i-1]<n){
            scanf("%d",&x[i]);
        }
    }
    for(i=0;i<n;i++){
        for(y=0;y<n;y++){
            if(i==x[y]){
                printf("%s\n",b[y]);
            }
        }
    }
    return 0;    
}


运行结果及报错内容
我是想弄一个二维数组,但字符型不会用
我想要达到的结果

#include <stdio.h>
int main()
{
    int i,n;
    scanf("%d",&n);
    getchar();
    char str[n][30];
    int a[n];
    for(i = 0;i < n;i++){
        gets(str[i]);
    }
    for(i = 0;i < n;i++){
        scanf("%d",&a[i]);
    }
    for(i = 0;i < n;i++){
        printf("%s\n",str[a[i]]);
    }
    return 0;
}