有人可以告诉我这个代码有什么问题吗?我不能使用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;
}
答案 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'