我想定义一个列数固定,但是行数可以更改的数组,a[x][20]这样的。
现在写成了这个样子
```#include<stdio.h>
#include<string.h>
int main()
{
char *answer[20];
int n;
int i;
scanf("%d",&n);
for(i=0;i<n;i++)
answer[i]=(char*)malloc(sizeof(char)*n);
for(i=0;i<n;i++)
scanf("%s",answer+i);
for(i=0;i<n;i++)
printf("%s",*(answer+i));
}
```
运行起来就没反应,输入结束后啪一下就结束了
如下:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
char **answer;
int n;
int i;
scanf("%d",&n);
getchar();
answer = (char **)malloc(sizeof(char*)*n);
for(i=0;i<n;i++)
answer[i]=(char*)malloc(sizeof(char)*20); //固定20列
for(i=0;i<n;i++)
scanf("%s",answer[i]);
for(i=0;i<n;i++)
printf("%s",answer[i]);
return 0;
}
你题目的解答代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char (*answer)[20];
int n;
int i;
scanf("%d",&n);
getwchar();
answer=(char (*)[20])malloc(sizeof(char)*20*n);
for(i=0;i<n;i++)
scanf("%s",answer+i);
for(i=0;i<n;i++)
printf("%s",*(answer+i));
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
类型错误。
你应该定义成char answer[][]
然后双重循环给它分配空间
不要定义成指针数组