首页 > 解决方案 > C - 写入和读取动态数组

问题描述

我正在尝试创建一个用于存储名称的二维数组(每个最多 50 个字符)。我写了一个代码,但它不能正常工作,问题出在哪里?(我可以用静态数组来做到这一点,但是一开始我的程序不知道我想在数组中存储多少个名字)。这是我的代码:

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int n=5;
    int size=51;
    char *a_name=(char*)malloc(n*size*sizeof(char));
    for(int i=0;i<n;i++){
        scanf("%s",&a_name[i]);
    }
    for(int i=0;i<=n;i++){
        printf("%s\n",a_name[i]);
    }
    return 0;
}

标签: arraysc

解决方案


你需要的不是一个数组,char而是一个char *. 尝试这个:

int n = 5, size = 51;
char **name_array = (char **)malloc(sizeof(char *) * n);
for (int i = 0; i < n; ++i) {
    name_array[i] = (char *)malloc(sizeof(char) * size);
    // You may initialize the array first.
    scanf("%s\n", name_array[i]); 
}

当您不再需要这些名称时,请记住释放内存。


推荐阅读