c语言定义动态的二维数组?

我想定义一个列数固定,但是行数可以更改的数组,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));
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

类型错误。
你应该定义成char answer[][]
然后双重循环给它分配空间
不要定义成指针数组