Re: [問題] 關於讀取檔案資料的問題
※ 引述《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
05/08 10:44, 3F
→
05/08 13:27, , 4F
05/08 13:27, 4F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章