[問題] fscanf的問題

看板C_and_CPP (C/C++)作者 (*GIGI*)時間14年前 (2011/05/17 17:59), 編輯推噓2(207)
留言9則, 6人參與, 最新討論串4/4 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) codeblock 問題(Question): 小妹照螞蟻本給的範例嘗試fscanf的範例,但是卻出現了error 餵入的資料(Input): Board.txt的內容 Board None DRSH None None DRTH LSSH LSSS None DSSH None LRTS None DSTH DRSS LRSS None Select LRSH Free LRTH LRSH LSTS LSTH DRTS DSTS DSSS 預期的正確結果(Expected Output): print出 Board None DRSH None.....DSSS 也就是把所有的string 印出來 錯誤結果(Wrong Output): "0x77c14609"指令參考的 "0x00000000"記憶體.該記憶體不能為"written". 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> char board[32]; int main() { FILE *cfPtr; if ((cfPtr=fopen("Board.txt","r"))==NULL){ printf("file could not opened\n");//Board.txt 無法開啟 } else{ fscanf(cfPtr,"%s",board); while(!feof(cfPtr)){ printf("%s\n",board); fscanf(cfPtr,"%s",board); } fclose(cfPtr); } system ("pause"); return 0; } 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.126.44.104

05/17 18:02, , 1F
char board; <= 它只能裝一個字元
05/17 18:02, 1F

05/17 18:03, , 2F
改成 char board[32]; 試試看吧
05/17 18:03, 2F
ok了,我犯了愚蠢的錯誤QQ

05/17 18:19, , 3F
吼, scanf 都沒試過能不能跑就跳等打 fscanf 會不會太
05/17 18:19, 3F

05/17 18:20, , 4F
超過阿, 練功也不是這樣練的
05/17 18:20, 4F
scanf我會拉>"<,板主別生氣 再問一個問題,如果我想把每次讀到的string 裡的每個字母,拆開存到一個struct要用什麼函式??? 例如: struct matrix { char aaa; char bbb; char ccc; char ddd; }; 現在我想把讀到的string -> "LRTH",分別把L存到aaa,R存到bbb,T存到ccc,H存到ddd 我在想是不是在 fscanf(cfPtr,"%s",board); 之後 對board再用一個涵式把存在裡面的string一個一個抓出來存到struct裡去? 想請問這個函式是什麼? 或是有更快的方法嗎!!! ※ 編輯: gigi1009 來自: 59.126.44.104 (05/17 20:05)

05/17 21:41, , 5F
原POis正妹>//<
05/17 21:41, 5F

05/17 22:04, , 6F
可以直接用 memcpy() 複製 4 bytes 過去
05/17 22:04, 6F

05/18 10:42, , 7F
三種方法做到,1.strcpy,2.memcpy,3指標參照的方法
05/18 10:42, 7F

05/18 17:55, , 8F
那你乾脆用fscanf(cfPtr,"%4s",matrix);好了...
05/18 17:55, 8F

05/19 00:50, , 9F
我覺得有寫到NULL的地方的嫌疑...
05/19 00:50, 9F
文章代碼(AID): #1DqaSD3O (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1DqaSD3O (C_and_CPP)