[問題] strlen傳回的長度會亂跳

看板C_and_CPP作者 (yolling)時間11年前 (2012/08/09 21:03), 編輯推噓1(107)
留言8則, 5人參與, 最新討論串1/1
剛剛我朋友問了我一個問題,說strlen傳回的數字不對, 我測了一下還真的不對,而且還怪怪的,數字傳回的大小會不一樣 因此想請問各位高手們為什麼會這樣 char a[]={1,2,3,4,5}; cout<<strlen(a); //傳回的會是7 這裡應該傳回5不是嗎@@? 可是如果中間我多給他一個東西 char a[]={1,2,3,4,5}; string b="12345"; cout<<strlen( a )<<endl; //傳回的就會變成5了@@ 請問有人知道為什麼嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 49.158.60.5 ※ 編輯: yoll522 來自: 49.158.60.5 (08/09 21:03)

08/09 21:16, , 1F
strlen是一個byte一個byte看 直到0為止
08/09 21:16, 1F

08/09 21:17, , 2F
你的a的寫法在mem中 後面不會自己接0
08/09 21:17, 2F

08/09 21:18, , 3F
寫成char const * a = "12345" 後面才會補0
08/09 21:18, 3F

08/09 21:19, , 4F
至於你中間多東西會ok的原因 只是剛好而已
08/09 21:19, 4F

08/09 21:32, , 5F
原來如此,感謝你
08/09 21:32, 5F

08/09 23:16, , 6F
而且這樣assign, 1 != '1'喔
08/09 23:16, 6F

08/10 00:18, , 7F
如果a改成{1,2,3,4,5,6,7,8},結果可能又不一樣了
08/10 00:18, 7F

08/10 12:09, , 8F
應該用sizeof才是吧?
08/10 12:09, 8F
文章代碼(AID): #1G8xKUnk (C_and_CPP)