Re: [問題] char* 如何讀取下一行?

看板C_and_CPP作者 (編碼)時間12年前 (2012/07/20 00:55), 編輯推噓4(404)
留言8則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《nikker (忘了前進)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : VC++ : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : cocos2d-x : 問題(Question): : 從某個文件檔中將整個文件檔讀入成 char* : (因某些原因,無法使用 getline 逐行讀取) : 假設 char* 中是 : ABCD : EFGH : HIJK : 而我會在每一行中判斷是否有我要的資料, : 如果沒有再去下一行找。 : 本來用 getline 已經可以完成了, : 但如上所述,被迫將整段資料存成char*後再來分析, : 請問有什麼方法可以做到換行讀取嗎? : 請不吝指教 o(><)o #include <stdio.h> #include <string.h> int main() { char* in = "abcdefg\n1234567\n3323\n6300\n8300"; char buf[1024]; int size = strlen(in); int offset = 0; while(offset < size) { int c = 0; int ret = sscanf(in + offset, "%[^\n]\n%n", buf, &c); if(ret < 0) break; offset += c; printf("buf=\"%s\"\n", buf); } return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc)

07/20 01:25, , 1F
不知道為什麼Regular expression對我來說是個障礙...
07/20 01:25, 1F

07/20 01:29, , 2F
regex 比 scanf 好用又簡單多了,不同程式語言也很好轉換
07/20 01:29, 2F

07/20 08:37, , 3F
感謝指導,馬上來寫寫看
07/20 08:37, 3F

07/20 21:49, , 4F
已解決!但說老實的,看不太懂sscanf那行>"<
07/20 21:49, 4F

07/21 01:51, , 5F
man一下sscanf解說滿詳細的
07/21 01:51, 5F

07/21 17:24, , 6F
%[^\n] 讀入字串,直讀到到\n。
07/21 17:24, 6F

07/21 17:24, , 7F
也就是讀取一行
07/21 17:24, 7F

07/21 17:25, , 8F
%n表示此次讀進幾個字元,結果存到c
07/21 17:25, 8F
※ 編輯: utf8 來自: 111.240.235.8 (08/23 00:45)
文章代碼(AID): #1G23mTWw (C_and_CPP)
文章代碼(AID): #1G23mTWw (C_and_CPP)