0
我必須從文件中讀取迷宮並將其存儲在二維數組中。 我讀的字符被存儲在一個.txt文件是這樣的:從文本文件中讀取多行字符
######
#....#
#..#.#
. .#..
######
注意,行數和列數可以根據文件的不同而不同。 我在閱讀文件至今的方法:
#include <stdio.h>
#include <stdlib.h>
void read_arr(char** a, int x_size, int y_size) {
int i, j;
int tmp;
FILE* file = fopen("lab1.txt", "r");
for (i = 0; i < y_size; i++) {
for (j = 0; j < x_size; j++) {
if (tmp = fgetc(file))
a[j][i] = tmp;
printf("Success\n");
}
}
}
void print_arr(char** a, int x_size, int y_size) {
int i, j;
for (i = 0; i < x_size; i++) {
for (j = 0; j < y_size; j++) {
printf("%c", a[i][j]);
}
printf("\n");
}
}
int main() {
int x_size, y_size;
printf("What is the size of the maze (<x> <y>)? ");
scanf("%d %d", &x_size, &y_size);
printf("Maze has size %dx%d\n", x_size, y_size);
char** a = malloc(sizeof(char) * (x_size * y_size));
if (!a)
return -1;
printf("Successfully allocated memory!\n");
read_arr(a, x_size, y_size);
print_arr(a, x_size, y_size);
return 0;
}
但所有我從這個得到的是一個內存錯誤(我怕我cant't給出確切的錯誤消息,因爲它會顯示在德國)。 我試過的另一件事是使用fscanf,但那也不起作用。 我在Ubuntu上,並使用gcc編譯我的代碼。 任何幫助將不勝感激!
'字符** A = malloc的(的sizeof(char)的*(X_SIZE * Y_SIZE));'對指針分配空間,但不數據。 – chux
「我不能給出確切的錯誤信息,因爲它是用德語顯示的」 - 我不明白爲什麼這使得它不可能給它。爲什麼不改變語言環境? –
這是它:「Speicherzugriffsfehler(Speicherabzug geschrieben)」 – refl3x