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)
非常感谢任何建议,
两个主要问题:
首要问题:
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)