国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C語言字符串包含控制字符的一些問題

2022-11-17 11:53 作者:章魚蘿卜貓  | 我要投稿

今天遇到個小問題,記錄一下。

在c語言中,char * a="abc\x61def" 這個字符串占多少字節(jié)?

這不是很簡單嗎?abc = 3byte,\x61 = 1byte, def = 3byte, 再加結(jié)尾的一個字節(jié),這不一共8字節(jié)嗎?

其實這就是c語言字符串16進(jìn)制轉(zhuǎn)義的一個坑,或者說不聰明的地方,在16進(jìn)制轉(zhuǎn)義中,并不限制位數(shù),也就是說 \x1234567=\x67, 前面的部分都被忽略了,這個a字符串,最后就變成了abc\xef, 也就是5個字節(jié)。

如果想要一個8個字節(jié)發(fā)字符串怎么辦?

方法一,把需要轉(zhuǎn)義的換成8進(jìn)制

char * a="abc\141def" ,141(8)=61(16),?? 在C語言中,8進(jìn)制被限制為3位,不會存在上述問題。

方法二,把需要轉(zhuǎn)義的部分分開

char * a="abc\x61" "def", 或者char * a="abc" "\x61" "def", 這樣寫就會得到8字節(jié)的字符串了。

在C語言中,預(yù)處理是第 4 階段,十六進(jìn)制轉(zhuǎn)義序列在第 5 階段轉(zhuǎn)換,字符串文字連接在第 6 階段完成。所以可以用上面的方法。

C語言字符串包含控制字符的一些問題的評論 (共 條)

分享到微博請遵守國家法律
章丘市| 广安市| 满洲里市| 大同县| 长兴县| 广安市| 隆安县| 阿克陶县| 华宁县| 台中县| 张家川| 锡林浩特市| 松溪县| 大冶市| 栖霞市| 郎溪县| 菏泽市| 肥城市| 清流县| 浦江县| 朝阳县| 论坛| 湟中县| 黄陵县| 金堂县| 登封市| 双城市| 丰原市| 沁阳市| 区。| 雅安市| 潍坊市| 桐梓县| 中牟县| 宝兴县| 如东县| 尼木县| 灵璧县| 南开区| 伊川县| 太白县|