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

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;
}