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

标签 c multidimensional-array memory-management

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

相关文章:

c - 在 C 中另存为二进制文件,但不显示零和一

java - JNI 访问对象的实例变量

c - 使用 C 与 Shell 交互

php 对多维数组进行排序,但从 1 开始索引

JavaScript 迭代二维数组并返回不匹配项

c - 已编辑 : incompatible types when assigning to type ‘struct Bar’ from type ‘struct Bar *’

c - 为什么 CGPoint 声明了两次?

可变大小数组的 C++ 数组

java - Selenium 使用太多内存

c - 为什么在访问阻塞/受限内存位置时不会出现段错误?