go maze.in 迷宫算法 fscan函数无法正常读取

我在慕课网上看的大神的教程学golang

但是他的是在ios上的,我照着他的代码写会出现不能识别换行符的问题

输入的数组是这样的

6 5
0 1 0 0 0
0 0 0 1 0
0 1 0 1 0
1 1 1 0 0
0 1 0 0 1
0 1 0 0 0

输出却是这样的

  0   0   0   0   0 
  0   0   0   0   1 
  1   0   0   0   1 
  0   0   0   0   0 
  0   0   0   0   0 
  0   0   0   0   0 

解决办法:

在读入的时候 添加换行符识别 

	// var row, col int
	// var end string
	// // // 读取一行,遇到换行符停止读取; end 把回车读取; 遇到空格跳过,遇到换行停止,就是取一行数据
	// fmt.Fscanf(file, "%d %d %s", &row, &col, &end)
	// fmt.Println(row)
	// fmt.Println(col)
	// maze := make([][]int, row) //第一个 [] 是一个 slice ,   slice的元素类型是  []int
	// for i := range maze {      //针对每一行作出处理
	// 	maze[i] = make([]int, col) //表示每一行都有col列
	// 	for j := range maze[i] {   //获得每一行的列数
	// 		fmt.Fscanf(file, "%d", &maze[i][j])
	// 	}
	// 	fmt.Fscanf(file, "%d", &end)
	//}

还有一种  不借助end,直接用\n  ,在获取每一行数据时在结尾识别\n

var row, col int
	fmt.Fscanf(file, "%d %d\n", &row, &col)
	maze := make([][]int, row) //第一个 [] 是一个 slice ,   slice的元素类型是  []int
	for i := range maze {      //针对每一行作出处理
		maze[i] = make([]int, col) //表示每一行都有col列
		for j := range maze[i] {   //获得每一行的列数
			if j == col-1 {
				fmt.Fscanf(file, "%d\n", &maze[i][j])
			} else {
				fmt.Fscanf(file, "%d", &maze[i][j]) //读取到每一行每一列
			}
		}
	}}

两种都可以顺利显示

  0   1   0   0   0 
  0   0   0   1   0 
  0   1   0   1   0 
  1   1   1   0   0 
  0   1   0   0   1 
  0   1   0   0   0 

 

你可能感兴趣的:(go maze.in 迷宫算法 fscan函数无法正常读取)