[問題] 新手發問--關於C語言如何解讀字串?

看板C_and_CPP作者 (晃晃)時間11年前 (2014/10/21 23:22), 編輯推噓6(609)
留言15則, 9人參與, 最新討論串1/1
小弟是從網路上課程自學C語言一個月的新手 學到字串的地方有個小疑惑 就是要如何解讀所讀入的字串? 例如輸入"one" 就執行XXX 輸入"two" 就執行XXX 不能直接用 if (string == "one ") 這樣嗎? 我google後可以用strcspn 但總覺得應該有更簡單直覺的方法? 所以上來請教 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.77.143 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1413904929.A.839.html

10/21 23:23, , 1F
用 C++
10/21 23:23, 1F

10/21 23:30, , 2F
memcmp
10/21 23:30, 2F

10/21 23:59, , 3F
可以用enum的方式去做!
10/21 23:59, 3F

10/22 00:53, , 4F
strcmp可以比對
10/22 00:53, 4F

10/22 01:05, , 6F
你在用C事情就不會都如你想的這麼簡單。
10/22 01:05, 6F

10/22 06:39, , 7F
方法很多種,但是絕對不是 if (string == "one")
10/22 06:39, 7F

10/22 06:39, , 8F
想想看變數的type就可以明白了,type是char *
10/22 06:39, 8F

10/22 06:40, , 9F
string指到的是使用者輸入的buffer,"one"則是指向
10/22 06:40, 9F

10/22 06:41, , 10F
constant string pool裡面的位址,同樣的你也不能用
10/22 06:41, 10F

10/22 06:41, , 11F
這個方法來比較兩個字串,就算兩者指到的char陣列的
10/22 06:41, 11F

10/22 06:42, , 12F
字串值一樣,但是記憶體位址不同,等號就不會成立
10/22 06:42, 12F

10/22 12:35, , 13F
if應該也可以吧
10/22 12:35, 13F

10/23 12:13, , 14F
strcmp好用
10/23 12:13, 14F

10/23 14:36, , 15F
不要用memcmp比字串,否則寫socket的時候...
10/23 14:36, 15F
文章代碼(AID): #1KHdeXWv (C_and_CPP)