为什么*strptr = 0
截断字符串?(C)
为什么ascii值30 of 0变为null?
这里我与数字0,字符串0和字符串termianl 0混淆。
你的解释将不胜感激。
答案 0 :(得分:6)
更确切地说,有三个词汇元素包含零字符:0
(未引用),'0'
(引用,通常(但不总是)等于48
或{{ 1}}未加引号)和0x30
(等于'\0'
,但在字符表示法中)。
问题在于讨论两个不同的价值观...... 0
。忘记大约30,48等。请记住'0' != '\0'
和'0'
是不同的字符,'\0'
是一个字符串终结符,其值为'\0'
...
我认为您打算使用0
(强调引号)。
答案 1 :(得分:3)
所有标准库字符串例程都将字符'\0'
视为字符串终止符,因此如果将其放在字符串的开头 - 它们都看不到要处理的数据,因为第一个字符是终止符,因此有效字符串为空。是的,每个标准'\0'
是一个值为0
的字符。结果:'\0' == 0
是真的。