gpt4 book ai didi

C 二维数组malloc 不保留第一行

转载 作者:行者123 更新时间:2023-12-02 06:52:00 28 4
gpt4 key购买 nike

我的表格第一行有问题

char **M = malloc(dim->lignes*sizeof(char));
for(i=0;i<dim->lignes;i++)
{
M[i]=malloc(dim->colonnes*sizeof(char));
for(j=0;j<dim->colonnes;j++)
{
M[i][j] = fgetc(F);
printf(" ");
printf("%c",M[i][j]);
}
printf("\n");
fgetc(F);
}

for(i=0;i<dim->lignes;i++)
{
for(j=0;j<dim->colonnes;j++)
{
printf(" ");
printf("%c",M[i][j]);
}
printf("\n");
}

输出:

 # # # # # # # # #
# # # # # # # # #
# # #
# # # #
# #
# #
# #
# # #
# # # #
# # # # # # # # #

P Õ h Õ Ç
# # # # # # # # #
# # #
# # # #
# #
# #
# #
# # #
# # # #
# # # # # # # # #

我不明白为什么第一个打印是正确的而不是第二个。

最佳答案

char **M = malloc(dim->lignes*sizeof(char)); 

应该读作

char **M = malloc(dim->lignes*sizeof(char *));

如果是这样就成立了,这是假设的例子,

char *M = malloc(dim->lignes*sizeof(char));

注意这里的区别,sizeof

对于单个指针,使用sizeof类型

对于双指针,使用sizeof * 类型等。

关于C 二维数组malloc 不保留第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41309156/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com