我正在尝试使用文本文件中的字符填充二维数组(mapLayout)。
当我使用printf输出字符时,一切看起来都很好,但是将数字添加到数组的实际行似乎会导致崩溃。
#include <stdio.h>
#include <stdlib.h>
void createMap();
//height of file being read
int mapHeight, mapWidth = 20;
char mapLayout[20][20];
int main()
{
createMap();
return 0;
}
//read in string from file and populate mapLayout with chars
void createMap(){
FILE *file = fopen("map.txt", "r");
int col, row = 0;
int c;
if (file == NULL)
return NULL; //could not open file
while ((c = fgetc(file)) != EOF)
{
printf("%c", c);
printf("\nx:%d, y:%d\n", col, row);
if(c == '\n'){
row++;
col = 0;
}else{
mapLayout[col][row] = c; //<-- This line seems to be the problem
col++;
}
}
return;
}
我正在阅读的文件是地图的20 x 20表示。这是:
xxxxxxxxxxxxxxxxxxxx
xA x
x x
x x
xxxxxxxxxxxxxxxx x
x x
x x
x x
x x
x x
x xxxxxxxxxxxxxxx
x x x
x x x
x x x
x x x
x x x
x xxxxxxx x
x x
x Bx
xxxxxxxxxxxxxxxxxxxx
非常感谢任何帮助。
答案 0 :(得分:9)
int col, row = 0;
为什么col
未初始化为零。如果文件中的第一个字符是\n
,那么它不会崩溃,因为所有剩余的情况都会发生崩溃(未定义的行为)。
做
int col = 0;
int row = 0;
答案 1 :(得分:1)
根据你的编译器,可能是那行和mapHeightd它不会得到一个anny值。 尝试: int row = 0,col = 0;