c中没有malloc的字符串数组

时间:2016-01-04 18:29:52

标签: c arrays string pointers arrayofstring

有人可以告诉我这个代码有什么问题吗?我不能使用malloc,因为我没有在课堂上学习它。我的意思是我可以制作一个没有malloc的二维数组字符串,如果是的我怎么样我应该写一个元素当我想改变它/打印它/扫描它。谢谢你提前

int main() {

    size_t x,y;
    char *a[50][7];

    for(x=0;x<=SIZEX;x++)
    {
        printf("\nPlease enter the name of the new user\n");
        scanf(" %s",a[x][0]);

        printf("Please enter the surname of the new user\n");
        scanf(" %s",a[x][1]);

        printf("Please enter the Identity Number of the new user\n");
        scanf(" %s",a[x][2]);

        printf("Please enter the year of birth of the new user\n");
        scanf(" %s",a[x][3]);

        printf("Please enter the username of the new user\n");
        scanf(" %s",a[x][4]);

    }

    return 0;
}

2 个答案:

答案 0 :(得分:2)

因此,您需要一个2d字符串数组(char数组)。实现此目的的一种方法是将char的3d数组分配为:

char x[50][7][MAX_LENGTH];

你可以认为有一个数组start(指针)的矩阵,然后是另一个维度来给你的矩阵提供深度(即你的字符串的存储空间)。

您的方法也很好,只要您愿意使用malloc或类似的存储空间为您的字符串手动分配。

答案 1 :(得分:0)

  

我可以制作一个没有malloc

的二维字符串数组

不确定。让我们将其减少到2 * 3:

#include <stdio.h>

char * pa[2][3] = {
   {"a", "bb","ccc"},
   {"dddd", "eeeee", "ffffff"}
  };

int main(void)
{
  for (size_t i = 0; i < 2; ++i)
  {
    for (size_t j = 0; j < 3; ++j)
    {
      printf("i=%zu, j=%zu: string='%s'\n", i, j, pa[i][j]);
    }
  }
}

输出:

i=0, j=0: string='a'
i=0 j=1: string='bb'
i=0, j=2: string='ccc'
i=1, j=0: string='dddd'
i=1, j=1: string='eeeee'
i=1, j=2: string='ffffff'