[英]Reading a .txt file into a char array and printing it
我正在嘗試讀取文件並打印它。 .txt文件是我試圖打印的迷宮,因此我首先將它放在2d char數組中。 但正如你可以看到我打印輸出時,它會以某種方式搞砸了。 到底是怎么回事???
main.cpp中
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
using namespace std;
void beginGame();
int main(){
beginGame();
return 0;
}
void beginGame(){
char map[20][30];
//read a .txt file into the program
ifstream file;
file.open("FloorA.txt");
char c;
for (int i = 0; i < 20; i++){
for (int j = 0; j < 30; j++){
file.get(c);
map[i][j] = c;
}
}
file.close();
//print the array
for (int i = 0; i < 20; i++){
for(int j = 0; j < 30; j++){
cout << map[i][j];
}
cout << "." << endl;
}
}
FloorA.txt
##############################
# K #
# ############## ### ### # #
# K # # #C# #K# # #
# ######### # A # # # # # # #
# K # # # #
# ############D#####D####### #
# #
# C G C #
# #
# ######D##############D#### #
# # C #K# # #
# #### ######## # # # #
# #K # # ### # # #### #
# # ## # #### # # # # # #
E # ## # # ### # # #### # #
# # # #K D # #
# #D#### ################### #
# K #
##############################
輸出:
##############################.
# K .
# ############## ### ### #.
# K # # #C# #K# .
# ######### # A # # # # # .
# K # # .
# ############D#####D###.
# .
# C G .
# .
# ######D###########.
# # C .
# #### ######## # .
# #K # # #.
# # ## # #### # .
E # ## # # #.
# # # #K .
# #D#### ####. #
# .## #
###########. #
FloorA.txt有30個字符加上換行符,每行總共31個字符。 您可以將數組更改為map [20] [31]並在第一個循環中循環j <31。
實際輸出是
##############################.
# K .
#
# ############## ### ### #.
#
# K # # #C# #K# .
# #
# ######### # A # # # # # .
# #
# K # # .
# #
# ############D#####D###.
#### #
# .
#
# C G .
C #
# .
#
# ######D###########.
###D#### #
# # C .
#K# # #
# #### ######## # .
# # #
# #K # # #.
## # # #### #
# # ## # #### # .
# # # # #
E # ## # # #.
## # # #### # #
# # # #K .
D # #
# #D#### ####.
############### #
# .
K #
###########.
FloorA.txt
新行應該給你一個線索 - FloorA.txt
每一行都有30
字符后跟換行符。 get
不會忽略換行符。 因此,雖然map[0][0]
到map[0][29]
具有所需的值,但第31
字符讀取(換行符)將被寫入map[1][0]
。 這也解釋了輸出的其余部分。 要解決此問題,請單獨閱讀換行符。
for (int i = 0; i < 20; i++){
for (int j = 0; j < 30; j++){
file.get(c);
map[i][j] = c;
}
file.get(c);//To read the newline
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.