Re: [問題] fscanf 和 fprintf 的問題(字串擷取)

看板C_and_CPP (C/C++)作者時間16年前 (2009/09/02 23:17), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串2/2 (看更多)
主要的問題小弟解決了~來跟各位分享一下 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
你沒塞'\0'在字串後面阿~
09/02 23:23, 1F

09/02 23:25, , 2F
唔 小弟明天回去翻書...真是對不起推原文的那位板友orz
09/02 23:25, 2F
文章代碼(AID): #1Adenv4H (C_and_CPP)
文章代碼(AID): #1Adenv4H (C_and_CPP)