【发布时间】:2015-12-13 19:44:03
【问题描述】:
所以我们正在学习如何将动态数组与 malloc 等一起使用,而我基本上正在努力学习如何使用这个东西。从表面上看,我想做的是让用户输入填字游戏并让程序解决它,但我什至无法完成成功存储拼图的第一步。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main (){
char *userInput = malloc (sizeof(char)*4);
// allocates columns with a length of 4?
char **grid = malloc(sizeof(char)*4);
int i, j;
for(i=0; i<4; i++){
scanf("%s", userInput);
for (j=0; j<4; j++){
// allocates rows with a length of 4?
grid[i] = (char*) malloc (sizeof(char)*4);
grid[i][j] = userInput[j];
}
}
printf("%c", grid[0][2]);
return 0;
}
它现在是硬编码的,但它会询问网格的大小,但它的作用是进行 4x4 填字游戏并将每个字母放入字符数组中,然后它会在拼图中找到单词。我现在要做的就是接受用户输入并将其放入网格中。我试图用我的代码做的一个示例是
Input:
abcd
efgh
ijkl
mnop
Output:
c
但最终被吐出来的是垃圾。
我正在使用代码块,但是当我调试 malloc 数组并将它们设置为“监视”时,我不知道其中有什么。它向我显示了它们在内存中的位置,但我不知道它们中输入了什么,所以我什至无法检查发生了什么。任何帮助将不胜感激。
【问题讨论】:
-
char **grid = malloc(sizeof(char)*4);到sizeof(char*) -
使用
char **grid = malloc(4 * sizeof *grid);。避免弄错尺寸。