我正在为2D数组分配内存我认为我做得很好,但是当我在内存中看起来似乎 和我写的不一样。
int size = 4;
table = (int**)malloc(size*sizeof(int*));
int i;
for (i = 0; i < size; i++)
{
table[i] = (int*)malloc(size*sizeof(int));
}
但是当我查看调试器后,我添加了4X4 2D数组的所有元素。 好像我有超过4列。我只是以常规方式添加int
table[i][j] = num;
任何帮助将不胜感激!
感谢!
编辑:添加int的代码
int lineCounter = 0;
char line[200];
while (fgets(line, 200, fr) != NULL)
{
i = 0;
char* split;
int num;
split = strtok(line, " ");
sscanf(split, "%d", &num);
table[lineCounter][i] = num;
i++;
for (i ; i < size; i++)
{
int num;
split = strtok(NULL, " ");
sscanf(split, "%d", &num);
table[lineCounter][i] = num;
}
lineCounter++;
}
答案 0 :(得分:1)
检查以下代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int j,i;
int **table;
int lineCounter = 0;
char line[200];
int size = 4;
table = (int**)malloc(size*sizeof(int*));
for (i = 0; i < size; i++)
{
table[i] = (int*)malloc(size*sizeof(int));
}
while (fgets(line, 200, stdin) != NULL)
{
i = 0;
char* split;
int num;
split = strtok(line, " ");
sscanf(split, "%d", &num);
table[lineCounter][i] = num;
i++;
for (; i < size; i++)
{
int num;
split = strtok(NULL, " ");
sscanf(split, "%d", &num);
table[lineCounter][i] = num;
}
lineCounter++;
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%d ",table[i][j]);
printf("\n");
}
return 0;
}