[問題] C 讀取檔案的換行問題

看板C_and_CPP作者 (糰子大家族)時間3年前 (2021/01/13 11:53), 編輯推噓4(4010)
留言14則, 3人參與, 3年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) code: blocks 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 在練習檔案的讀寫時 讀取檔案讀不到下一行 餵入的資料(Input):預期的正確結果(Expected Output): fscanf = 1 line = 26.000000,-74.000000,James fscanf = 1 line = 26.500000,-73.000000,James fscanf = 1 line = 27.000000,-72.000000,James fscanf = 1 line = 27.500000,-71.000000,James fscanf = 1 line = 28.000000,-70.000000,James 錯誤結果(Wrong Output): fscanf = 1 line = 26.000000,-74.000000,James fscanf = 0 line = 26.000000,-74.000000,James fscanf = 0 line = 26.000000,-74.000000,James fscanf = 0 line = 26.000000,-74.000000,James fscanf = 0 line = 26.000000,-74.000000,James 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) http://codepad.org/f2JGKJsS 補充說明(Supplement): 無 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.130.181 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1610509993.A.C48.html

01/13 12:28, 3年前 , 1F
因為你是讀 [^\n], 所以換行被卡住了一直讀不進來
01/13 12:28, 1F

01/13 12:28, 3年前 , 2F
第一次讀進第一行後停在最後一個換行還沒被讀掉的地方
01/13 12:28, 2F

01/13 12:29, 3年前 , 3F
第二次讀一進去就看到換行所以沒讀任何東西就出來了
01/13 12:29, 3F

01/13 12:31, 3年前 , 4F
解決法就只要把那個換行讀掉就好, 方法你應該都已經知道
01/13 12:31, 4F

01/13 12:39, 3年前 , 5F
感謝 多寫一個fscanf(%c)就解決了
01/13 12:39, 5F

01/13 12:40, 3年前 , 6F
另外請問有沒有比較簡潔的寫法呢?
01/13 12:40, 6F

01/13 14:04, 3年前 , 7F
"%79[^\n] "在最後加個空格試試
01/13 14:04, 7F

01/13 14:14, 3年前 , 8F
樓上這是一個解法, 但要注意因為這個空格會吃掉連續空格
01/13 14:14, 8F

01/13 14:15, 3年前 , 9F
所以如果下一行開頭也有空格會被吃掉
01/13 14:15, 9F

01/13 14:15, 3年前 , 10F
在這裡是沒有不過在其他的應用要注意
01/13 14:15, 10F

01/13 15:35, 3年前 , 11F
不太理解為什麼加空格能運作呢 請問這裡的空格是指什
01/13 15:35, 11F

01/13 15:35, 3年前 , 12F
麼呢?
01/13 15:35, 12F

01/13 16:46, 3年前 , 13F
scanf 裡放空格會吃掉輸入中連續的 whitespace 字元
01/13 16:46, 13F

01/13 16:47, 3年前 , 14F
這包含空格字元跟換行字元, 它會吃掉輸入中這些字之後丟掉
01/13 16:47, 14F
文章代碼(AID): #1V_cwfn8 (C_and_CPP)