完美解決go Fscanf 在讀取文件時出現(xiàn)的問題
先要明白Fscanf的工作原理
Fscanf在遇到\n才結(jié)束
遇到\r時就會把\r替換成0
這就有個問題,要注意自己的文本換行符是什么,在Windows下就是\r\n,在Linux,Mac下就是\n,也就是說這里有個坑,
代碼在Linux和Mac下讀取數(shù)據(jù)文件是正常的,在Windows下就會遇到各種行末尾有個0,網(wǎng)上辦法用什么替換啊,用什么自定義Scan函數(shù)啊,太麻煩了,直接使用自帶IDE將打開的數(shù)據(jù)文件集換行符改成LF(Linux,Mac換行符)就行了
如下圖Idea

文件右下角LF點(diǎn)擊就可以更換換行符
補(bǔ)充:go中的Fscanf讀到0的問題
今天在使用Fscanf讀矩陣的時候遇到了一個問題,發(fā)現(xiàn)每次遇到換行,就多讀一個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下的格式導(dǎo)致的,在windows下的換行符是\r\n,所以遇到\r會讀一個0進(jìn)去,在linux下?lián)Q行符只有\(zhòng)n
解決方法1
直接通過修改ide的格式即可,在goland的下方修改:

改成LF即為linux,這種方法我試了沒成功,不知道是不是電腦的原因,可以先試一下這種方法
解決方法2
如果是不能避免,那就把這個0讀出來,然后扔掉即可,可以在每行后面,多根一句話:
fmt.Fscanf(file,"%d")
解決方法3
使用方法
fmt.Fscan(file,&maze[i][j])
不規(guī)定格式的情況下是不會出現(xiàn)多讀0
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
golang不到30行代碼實(shí)現(xiàn)依賴注入的方法
這篇文章主要介紹了golang不到30行代碼實(shí)現(xiàn)依賴注入的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07
簡化Go開發(fā)提高生產(chǎn)力的強(qiáng)大工具及使用詳解
作為?Go?開發(fā)人員,應(yīng)該都知道維持簡潔高效開發(fā)工作流程的重要性,為了提高工作效率和代碼質(zhì)量,簡化開發(fā)流程并自動執(zhí)行重復(fù)性任務(wù)至關(guān)重要,在本文中,我們將探討一些強(qiáng)大的工具和技術(shù),它們將簡化?Go?開發(fā)過程,助力您的編碼之旅2023-10-10
詳解Go操作supervisor xml rpc接口及注意事項(xiàng)
這篇文章主要介紹了Go操作supervisor xml rpc接口及注意事項(xiàng),管理web,在配置文件中配置相關(guān)信息,通過go-supervisor的處理庫進(jìn)行操作,需要的朋友可以參考下2021-09-09
基于Golang實(shí)現(xiàn)YOLO目標(biāo)檢測算法
目標(biāo)檢測是計算機(jī)視覺領(lǐng)域的重要任務(wù),它不僅可以識別圖像中的物體,還可以標(biāo)記出物體的位置和邊界框,YOLO是一種先進(jìn)的目標(biāo)檢測算法,以其高精度和實(shí)時性而聞名,本文將介紹如何使用Golang實(shí)現(xiàn)YOLO目標(biāo)檢測算法,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2023-11-11
linux下通過go語言獲得系統(tǒng)進(jìn)程cpu使用情況的方法
這篇文章主要介紹了linux下通過go語言獲得系統(tǒng)進(jìn)程cpu使用情況的方法,實(shí)例分析了Go語言使用linux的系統(tǒng)命令ps來分析cpu使用情況的技巧,需要的朋友可以參考下2015-03-03

