【发布时间】:2021-03-04 23:59:45
【问题描述】:
所以,我先说我对指针和动态分配相当陌生。目前我正在尝试将包含 3x3 整数矩阵的文件存储到二维数组中。我试过调试我的代码,我注意到它读取了我的前 2 个值,但开始在我的二维数组中生成随机垃圾。我假设我错误地存储了我的整数并且我的逻辑存在缺陷,但是当我不断尝试考虑它时,我似乎无法找到它可能不正确的地方,因为它们从 [0][0 移动]、[0][1] 等。
这是我的代码供参考。谢谢,如果我能就如何解决此特定案例和未来问题的问题提供一些指导,我将不胜感激。
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE* fpM1;
fpM1 = fopen("m1.txt", "r");
int i, j, row1 = 2, col1 = 2;
int* ptrM1 = (int* )malloc(9 * sizeof(int));
if (fpM1 != NULL) {
for (i = 0; i < row1; i++) {
for (j = 0; j < col1; j++) {
fscanf(fpM1, "%d", ((ptrM1 + i) + j));
}
}
for (i = 0; i < row1; i++)
for (j = 0; j < col1; j++) {
{
printf(" %d", *((ptrM1 + i) + j));
}
}
}
free(ptrM1);
fclose(fpM1);
return 0;
}
【问题讨论】:
-
for(i = 0 ; i < 2...只迭代两次。如果要读取 3 个值,请使用for (i=0; i < 3 ... -
哦,是的,我现在明白你的意思了。
标签: arrays c dynamic-memory-allocation