[問題] C字串一問

看板C_and_CPP作者 (DOGE)時間5年前 (2018/09/06 17:55), 編輯推噓11(1102)
留言13則, 6人參與, 5年前最新討論串1/1
剛剛在網路上看到一個東西 while(*s++ = *t++); 左思右思就是看不懂 後來查了一下,原來這種寫法等價於: while(*t){ *s = *t; s++; t++; } *s = *t; 也是這時候才知道C字串有*s++這種寫法 但我還是有兩個問題 1.*s++這種寫法,迴圈似乎不用加入終止條件,是因為C字串中必定有'\0'嗎? 因為我另外還有查到C++中有這種寫法: while(*s){ cout << *s++; } 這是代表C/C++中只要在迴圈中遇到'\0'就會作為終止條件嗎? 2.雖然知道兩種寫法是相等的,但請問為何會是相等的? 背後的原理我實在想不透 -- 標題 [洽特] 台灣雞翅國際股份有限公司?? 這麼奇特的名字是怎麼來的呢? 有人有八卦嗎????

09/07 19:42,
給你的雞雞一雙翅膀 跨國界尻槍
09/07 19:42

09/07 19:48,
雞翅→G翅→G WING→GG WIN→GG double IN→GGININ
09/07 19:48
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.63.206.65 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1536227747.A.847.html

09/06 18:19, 5年前 , 1F
C字串結尾必為'\0' 且'\0'的ascii值為0 所以是false
09/06 18:19, 1F

09/06 18:21, 5年前 , 2F
2的話可以參考運算子優先度 自己先試著解析看看順序
09/06 18:21, 2F

09/06 19:03, 5年前 , 3F
'\0' 0x00兩個是一樣的 有些平臺NULL也一樣
09/06 19:03, 3F

09/06 19:06, 5年前 , 4F
2的問題 我猜你只是指標不熟?
09/06 19:06, 4F

09/06 21:42, 5年前 , 5F
建議不要這樣寫,字串如果沒有\0結尾會很有趣
09/06 21:42, 5F

09/06 22:15, 5年前 , 6F
有沒\0的字串嗎?(除了自己塞字元進陣列
09/06 22:15, 6F

09/06 22:46, 5年前 , 7F
「惡意使用者」會故意去塞奇怪字串,或者你的程式出bug
09/06 22:46, 7F

09/06 22:49, 5年前 , 8F
各位捫心自問,每次吃字串時有沒有檢查長度等等
09/06 22:49, 8F

09/08 23:19, 5年前 , 9F
這讓我有個疑問 macro裡的字串compiler會幫我們補\0嗎
09/08 23:19, 9F

09/08 23:20, 5年前 , 10F
我現在是怕到自己補==
09/08 23:20, 10F

09/09 01:19, 5年前 , 11F
字串實字 (string literal, 用雙引號寫的) 一定會有 \0
09/09 01:19, 11F

09/09 14:00, 5年前 , 12F
了解 感恩L大
09/09 14:00, 12F

09/10 14:38, 5年前 , 13F
這種寫法比較要注意的是邊界,尤其是destination
09/10 14:38, 13F
文章代碼(AID): #1RaFcZX7 (C_and_CPP)