gpt4 book ai didi

c - 分配动态二维字符数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:07 25 4
gpt4 key购买 nike

海湾合作委员会 4.6.2 c89

为二维数组分配内存并填充字符。

但是,我似乎没有填充,因为当我打印时没有任何显示。

我是不是做错了什么?

char **attributes = NULL;

/* TODO: Check for memory being allocated */
attributes = malloc(3 * sizeof(char*));
int i = 0;
int k = 0;

for(i = 0; i < 3; i++) {
for(k = 0; k < 5; k++) {
sdp_attributes[i] = malloc(5 * sizeof(char));
sdp_attributes[i][k] = k;
}
}

for(i = 0; i < 3; i++) {
for(k = 0; k < 5; k++) {
printf("attributes[i][k] [ %c ]\n", attributes[i][k]);
}
}

非常感谢任何建议,

最佳答案

两个主要问题:

第一期:

for(i = 0; i < 3; i++) {
for(k = 0; k < 5; k++) {
sdp_attributes[i] = malloc(5 * sizeof(char));

您在内循环的每次迭代中重新分配 sdp_attributes[i] - 从而每次都覆盖它。你可能想要这个:

for(i = 0; i < 3; i++) {
sdp_attributes[i] = malloc(5 * sizeof(char));
for(k = 0; k < 5; k++) {

第二期:

sdp_attributes[i][k] = k;

你基本上是在写低位的 ascii 字符。其中大部分是不可打印的。像这样的东西可能会做你想做的事:

sdp_attributes[i][k] = k + '0';

关于c - 分配动态二维字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8738306/

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