[問題] segmentation fault在fscanf時

看板C_and_CPP (C/C++)作者 (ha)時間13年前 (2012/11/03 14:03), 編輯推噓0(008)
留言8則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev c++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 在fscanf時,幾乎一樣的兩件事,但是一個沒問題,只要fscanf另一個就會說是 segmentation fault,試過把start的註解起來end可以,把end註解起來start不 行,兩者都有,在start就會出錯。 找了好久還是不知道問題在哪裡,希望有人可以指點一下,謝謝。 餵入的資料(Input): 預期的正確結果(Expected Output): 將檔案開頭及結束的字串分別存起來。 錯誤結果(Wrong Output): segmentation fault 程式碼(Code):(請善用置底文網頁, 記得排版) char word_start[12]; char word_end[12]; fscanf(in_cy, "%s", word_start); ^^^^ fseek(in_cy, -11L, SEEK_END); fscanf(in_cy, "%s", word_end); 全部請連網址 http://codepad.org/6QzF0ROn 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.171.12.199 ※ 編輯: wk4xu4j 來自: 1.171.12.199 (11/03 14:05) ※ 編輯: wk4xu4j 來自: 1.171.12.199 (11/03 14:20)

11/03 15:37, , 1F
當你檔案內容超過12的時候你讀下去可能會有問題
11/03 15:37, 1F

11/03 15:38, , 2F
至於第二個fscanf可以過是因為你只讓他最多讀11個byte
11/03 15:38, 2F

11/03 15:59, , 3F
%11s ?
11/03 15:59, 3F
所以兩位的意思是start應該要規定讀多長進來? 用了,成功,謝謝。

11/03 16:00, , 4F
能不能解釋一下你想要用這兩個 scanf 跟 fseek 來做什麼?
11/03 16:00, 4F

11/03 16:13, , 5F
如果你的 ciphertext.txt 的內容是兩個長度 11 的字串的話
11/03 16:13, 5F

11/03 16:14, , 6F
應該是可以跑的。
11/03 16:14, 6F
ciphertext檔是一篇文章抽掉空格,所以是一長串超過11個字的東西。fseek是為了到最後 面的前十一個字去存那一串。 應該是我沒想到字串會有塞不下的問題,以為在宣告時限制住就可以了。謝謝以上各位 ※ 編輯: wk4xu4j 來自: 1.171.12.199 (11/03 16:31)

11/03 20:56, , 7F
這標題明明是中文怎麼文法像英文 XD
11/03 20:56, 7F

11/03 21:13, , 8F
英文字比中文多,少數服從多數。
11/03 21:13, 8F
不說沒發現耶 XD 本來是想打segmentation fault,後來覺得這樣不太清楚,就加 上後面的。 ※ 編輯: wk4xu4j 來自: 1.171.14.103 (11/04 00:14)
文章代碼(AID): #1GbBEgvv (C_and_CPP)
文章代碼(AID): #1GbBEgvv (C_and_CPP)