Re: [問題] fscanf 和 fprintf 的問題(字串擷取)
主要的問題小弟解決了~來跟各位分享一下
char HELL[350],num[6],date[8],a[6]......;
......
gets(HELL,350,fptr1);
for(i=0;i<6;i++){num[i]=HELL[i];}
for(i=0;i<8;i++){date[i]=HELL[i+6];}
for(i=0;i<6;i++){a[i]=HELL[i+14];}
......
這樣數格子去抓到想要的欄位(小弟的資料有固定格式)
感謝各位看過文章的板友m(_ _)m
--
小弟另外遇到一個可能是compiler的問題
因為抓出來的數值需要再去做運算
所以我用 idate = atoi(date) 這樣來把字串轉換成數值
可是其他項都沒問題,唯獨date這一欄,我print出來總是很奇怪的數字
printf("%d",idate);
20080101=> 1129358080 20010101=> -151165164
懷疑過是溢位,但我宣告long int也還是一樣,不曉得為什麼
而且借用學長的電腦用他慣用的Compiler就是正常的...orz
小弟用的是Dev-C++ 有板友遇過一樣的問題嗎~?
※ 引述《DKer ()》之銘言:
: 最近試著用C語言在整理一些數據
: 遇到兩個小問題小弟想不出答案,來請教各位~"~
: 我的原始資料大概是長這個樣子
: 466880200501011026.91028.2 ......
: 46688020050102 999.91030.0 ......
: ......
: 不同顏色代表不同的資料欄位
: 我用C寫出這樣子的東西(還在測試)
: 希望可以擷取我想要的欄位
: { FILE *fptr1,*fptr2
: char num[6],date[8],a[6],b[6] ...
: ......
: fscanf(fptr1,"%6s%8s%6s",&num,&date,&a);
: fprintf(fptr2,"%s %s %s",num,date,a);
: ......
: return 0;
: }
: 這樣子print出來的結果是: 20050101 1026.9
: num消失了
: 如果我把fscanf格式改成這樣
: fscanf(fptr1,"%6s,%8s,%6s",&num,&date,&a);
: 那num可以print出來,但是後面的資料都會變成亂碼~"~
: 想請教一下這是什麼問題
: scanf的正確格式應該是我寫的第一種吧@@?
: 第二個問題是 如第三欄位
: fscanf似乎沒有辦法讀取空白
: 在遇到第二列那種狀況的時候我的寫法就會記錄到999.91
: 同時讓後面的資料全都亂掉
: 請問這樣的問題有什麼方法可以解決嗎~?
: 爬文爬到用gets好像可以讀取到空白,但是看起來他好像只能一次性的讀取資料
: 不能做到我想要的分欄位?
: 小弟是個C的新手,請大家給我一些方向 m(_ _)m
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.7.170
→
09/02 23:23, , 1F
09/02 23:23, 1F
→
09/02 23:25, , 2F
09/02 23:25, 2F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章