海湾合作委员会 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/