Re: [問題] 關於讀取檔案資料的問題

看板C_and_CPP作者 (有趣生活)時間18年前 (2006/05/07 23:01), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串1/1
※ 引述《ggls (藏書人)》之銘言: : 目前需讀取的資料格式舉例如下 : 林口,1101,1,1000000,200000 : 台中,2101,1,1100000,300000 : 字串,字串,整數,浮點數,浮點數 : 現下使用的函式為fscanf() : f1 = fopen("inf001.CSV","r"); : fscanf(f1,"%s%s%d%f%f",name[1],locaNO[1],&type[1],&x[1],&y[1]); : 但是讀過之前的討論後 : 發現如果抓的是字串的話 : 要遇到空白或換行才會停止 : 也就是目前遇到的狀況 : 一開始抓字串就把整列抓完了 : 逗號本來只是區隔用的符號 : 但是目前沒有辦法區分 : 請問有辦法在逗號的地方停止 : 或是要用別的函式來處理比較好呢 : 若要用別的函式 : 翻了翻手邊的書好像也沒有比較好用的函式的樣子 不需要找別的函式啦~原本的 fscanf 在這個問題上已經夠用了 scanf 系列函式所使用的格式字串參數,有一個種用法是   %[^排除字元集] 以下一個小程式可以參考看看: ----------------------------------------------------------- #include <stdio.h> int main(int argc){ const char *input = "台中,2101,1,1100000,300000"; char s1[100],s2[100]; int d; float f1,f2; sscanf(input,"%[^,],%[^,],%d,%f,%f",s1,s2,&d,&f1,&f2); printf("%s\n%s\n%d\n%f\n%f",s1,s2,d,f1,f2); return 0; } ====== output ====== 台中 2101 1 1100000.000000 300000.000000 ----------------------------------------------------------- 在讀檔時使用的話 也只要把 sscanf(input, ..... 改成你的 fscanf(f1, ..... 就符合程式需求了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.70.137.117 ※ 編輯: UNARYvvv 來自: 61.70.137.117 (05/07 23:17)

05/08 00:12, , 1F
原來可以這樣子~
05/08 00:12, 1F

05/08 00:38, , 2F
這招強 ~@@
05/08 00:38, 2F

05/08 10:44, , 3F
原來還有這招阿, 高手 :D
05/08 10:44, 3F

05/08 13:27, , 4F
真高手 多謝了@@
05/08 13:27, 4F
文章代碼(AID): #14NWlJer (C_and_CPP)