[問題] 2D array的strcmp
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
dev c++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
請從122行開始看,宣告了一個char** value,希望一次可以比較一串字,把value比完
但在strcmp(ha, &value[i])(是不是應該用strcmp(ha, value[i])?但我這樣用,會
有segmentation fault,用了&其實complie時有出現warning說型別不對。前面所有的
scanf和md5也是因此而加上&,跑出的結果卻是所要的)時用debug看到的value[i]不是
自己希望的。
主要的問題就是strcmp(ha, &value[i])的使用,爬文好像有人有類似的問題,但我用
了malloc,感覺無法用一樣的辦法解決。另外printf("%s\n", &value[4]),不知為何
會印出一大堆,但我只有存32個字。
餵入的資料(Input):
一個hash過的字和一本字典整個把他hash掉。
預期的正確結果(Expected Output):
會在 while(i < length &&strcmp(ha, &value[i])!=0)裡面比到一樣的字串而停下來,
然後print出是什麼字。
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/7wSl8kVT
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.171.0.153
※ 編輯: wk4xu4j 來自: 1.171.0.153 (11/19 07:59)
→
11/19 09:00, , 1F
11/19 09:00, 1F
→
11/19 09:19, , 2F
11/19 09:19, 2F
好像明白了,一開始是配給value,但value[i]卻還沒有指到地方,這個意思?
→
11/19 14:21, , 3F
11/19 14:21, 3F
→
11/19 14:23, , 4F
11/19 14:23, 4F
→
11/19 14:24, , 5F
11/19 14:24, 5F
→
11/19 14:25, , 6F
11/19 14:25, 6F
→
11/19 14:26, , 7F
11/19 14:26, 7F
→
11/19 14:27, , 8F
11/19 14:27, 8F
謝謝,用程式碼就變得很具體了,兩種的差別。所以第一種作法最後會傳回一個指標,指
向count的String32(count*33的char)而第二種則是指向指標陣列,那些小指標再指向
char [33],第一種在記憶體是一大塊,而第二種在記憶體則是好幾個一條一條的空間
→
11/19 15:52, , 9F
11/19 15:52, 9F
→
11/19 15:54, , 10F
11/19 15:54, 10F
→
11/19 15:55, , 11F
11/19 15:55, 11F
→
11/19 15:56, , 12F
11/19 15:56, 12F
→
11/19 15:56, , 13F
11/19 15:56, 13F
→
11/19 15:57, , 14F
11/19 15:57, 14F
比了後也覺得我的寫法很怪XD,小指標的指標直接指到小指標要指的東西,這樣看起來,
malloc用法中的兩個型別後面的*只能差1,大於1或0都不太對勁。
compare會失敗喔,debug看起來,好像是不知道什麼的位置。但很奇怪的是之前fscanf
和fprintf那樣硬做可以,到strcmp時卻出問題。
感謝各位這麼有耐心的看我的code,而且一看就看出問題所在,謝謝。
※ 編輯: wk4xu4j 來自: 1.171.13.79 (11/19 20:33)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章