[問題] 關於用fgets & sscanf讀檔的問題

看板C_and_CPP (C/C++)作者 (c++新手)時間14年前 (2011/10/12 19:56), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/1
開發平台(Platform): dev c++ 問題(Question):1. 遇到不同字元時無法有效切割 2. 想寫出正確判別式 餵入的資料(Input): 1+1a,2-3b,3+5c 8+1g,4-9r,6-8d 4,5 1+1g,2-3z 8+1g,4-9r 8,6 預期的正確結果(Expected Output): 同上 錯誤結果(Wrong Output): 後面變成亂碼 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> #include <stdlib.h> int p=0,w=0; int main(int argc, char *argv[]) { int a[20]; int b[20]; char str[50]; FILE *fp_r=fopen("1.txt","r"); while(fgets(str,50,fp_r)!=NULL){ sscanf(str,"%d%[^+-]%d%[^a-z]\n",&a[p],&b[p]); printf(" is %d,%d\n",a[p],b[p]); p++; } printf("\n"); system("PAUSE"); return 0; } 補充說明(Supplement): 我目前只有寫到想要正確的顯示 1+1u 這種型態 並要將數字部分 丟入array裡面 +號跟u都要忽略 但是不知道為什麼出來總是有問題 想請問一下哪裡寫錯了!! 順便問一下 由於我接下來要寫 判別 ------------------------------- 1+1u,6-9l 2-8y,1+4d 5,4 ------------------------------ 這四個數字各要丟入不同的array裡面 但他們在同一個檔案裏面 中間還有空行 我還在思考該怎麼寫判別式 請問有強者指點一下嗎? 或是告訴我有哪方面的關鍵字 我可以google找答案 新手很笨 請多多包涵QQ 感謝大家!!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 74.115.6.51 ※ 編輯: wwi 來自: 74.115.6.8 (10/12 20:02)

10/12 20:05, , 1F
你的code沒半句fputs 卻要問fputs是哪招= =
10/12 20:05, 1F
※ 編輯: wwi 來自: 74.115.6.8 (10/12 20:07)

10/12 20:07, , 2F
對不起>""< 我打錯了
10/12 20:07, 2F

10/12 20:09, , 3F
你先去想想看%[]到底是做什麼的...
10/12 20:09, 3F

10/12 20:11, , 4F
我把他改成%*c發現結果正確了 好 我去查一下%[] 感謝!!
10/12 20:11, 4F

10/12 20:13, , 5F
另外想問一下 判別式的方面(就是如何判別資料是4,5還是6+8g)
10/12 20:13, 5F

10/12 20:14, , 6F
進而可以將他們區分的方面要往哪裡找呢QQ 謝謝
10/12 20:14, 6F

10/12 20:16, , 7F
就用for跑一次就知道了or 用一些好用的函式
10/12 20:16, 7F

10/13 10:16, , 8F
感謝!!!
10/13 10:16, 8F
文章代碼(AID): #1EbO1Ids (C_and_CPP)
文章代碼(AID): #1EbO1Ids (C_and_CPP)