go中的Fscanf读到0的问题

今天在使用Fscanf读矩阵的时候遇到了一个问题,发现每次遇到换行,就多读一个0的问题

func readMaze(filename string) [][]int {
	file, err := os.Open(filename)
	if err != nil {
		panic(err)
	}

	var row,col int
	fmt.Fscanf(file, "%d %d", &row, &col)
	maze := make([][]int, row)
	for i := range maze {
		maze[i] = make([]int, col)
		for j := range maze[i] {
			fmt.Fscanf(file,"%d",&maze[i][j])
		}
	}
	return maze
}

分析得出这是由于windows下的格式导致的,在windows下的换行符是\r\n,所以遇到\r会读一个0进去,在linux下换行符只有\n

解决方法1

直接通过修改ide的格式即可,在goland的下方修改:

go中的Fscanf读到0的问题_第1张图片
改成LF即为linux,这种方法我试了没成功,不知道是不是电脑的原因,可以先试一下这种方法

解决方法2

如果是不能避免,那就把这个0读出来,然后扔掉即可,可以在每行后面,多根一句话:

		fmt.Fscanf(file,"%d")
解决方法3

使用方法

		fmt.Fscan(file,&maze[i][j])

不规定格式的情况下是不会出现多读0

你可能感兴趣的:(go中的Fscanf读到0的问题)