分配动态2D字符数组

ant*_*009 1 c memory-management multidimensional-array

gcc 4.6.2 c89

为2D阵列分配内存并填充字符.

但是,我似乎没有填写,因为我打印什么都没有显示.

我在这里做错了吗?

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]);
    }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢任何建议,

Mys*_*ial 6

两个主要问题:

首要问题:

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

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

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

第二期:

sdp_attributes[i][k] = k;
Run Code Online (Sandbox Code Playgroud)

你基本上写的是较低的ascii字符.其中大多数都不可打印.像这样的东西可能会做你想要的:

sdp_attributes[i][k] = k + '0';
Run Code Online (Sandbox Code Playgroud)