Czytanie znaków z pliku do wskaźnika tablicy całkowitej.

0

Witam wszystkich forumowiczów!
I zwracam się do was z prośbą o pomoc w napisaniu funkcji do programu związanego z znajdywaniem drogi w labiryncie. Sam algorytm programu już jakoś wykombinowałem, a funkcja z którą mam problem to czytanie pliku *.txt w którym zapisany jest obraz labiryntu w postaci znaków "#"," " oraz "p" i "k". Chodzi mi tu o coś w tym stylu:
Jeśli plik labirynt.txt wygląda mniej więcej tak:

10
10
"##########",
"#S#     ##",
"# #  #   #",
"# #   #  #",
"# ### ##E#",
"#     #  #",
"# # ###  #",
"# #    # #",
"#    #   #",
"##########",

to pierwsze dwie wartości wczytuje jako rozmiar współrzędnych x i y labiryntu. Z tym nie mam zbyt dużego problemu. Natomiast, jeśli chodzi o obraz labiryntu, który pojawia się później chciałbym, aby był po wczytaniu równoważny z wpisaniem globalnym w kod programu:

const char *MAPA[]={
"##########",
"#S#     ##",
"# #  #   #",
"# #   #  #",
"# ### ##E#",
"#     #  #",
"# # ###  #",
"# #    # #",
"#    #   #",
"##########",
};

Czy da się to zrobić w miarę prosto i nie zajmując zbyt wiele linijek kodu?
Sam zastanawiałem się nad użyciem czegoś w stylu:

 fread(&*MAPA,y+3 , 1, plik); 

w postaci jakiejś pętli, ale nie jestem do końca pewien jak taką pętle oraz funckję zbudować aby czytać każdą linijkę po sobie.
Będę wdzięczny za wszelką pomoc, gdyż programuje dopiero pierwszy semestr i nie jestem jeszcze zbyt dobry w języku C.
Pozdrawiam.

0

Przy takim formacie pliku jak podałeś nie da się zrobić tego w sposób prosty.
Natomiast przy formacie pliku:

10
10
##########
#S#     ##
# #  #   #
# #   #  #
# ### ##E#
#     #  #
# # ###  #
# #    # #
#    #   #
##########

Sprawa znacznie się upraszcza.

0

Dzięki, zmieniłem zapis plików z mapami i jak na razie potrafię wczytać te znaki za pomocą funkcji fgets(MAPA, max_n, f) do tablicy MAPA natomiast nie do wskaźników mapy i zastanawiam się jak to zrobić.

0

Nie jestem wróżką więc nie wiem czym są u ciebie wskaźniki mapy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1