“一个串的字符个数即该串的长度”对吗

如题所述

字符串的长度是从字符串的开始字符起算,直到遇到字符串结束符 '\0' 以前的字符个数。
例如: char s[]="abc 123\0XYZ"; printf("%d\n",strlen(s)); 输出7。
这里,计算字符串长度,只计入 abc 3个字母 加 1个空格 加123 三个数字,共7个。字符串长度 是 7个字节。后面的 XYZ 不算在字符串长度内。
例如:char s[]="abc\066123\0XYZ"; printf("%d\n",strlen(s)); 输出7。
与上面不同的是 少了一个空格符,多了一个转义字符 '\066' , 字符串的长度 统计到 字符串结束符 '\0' 以前。共7个。 1个转义字符由多个字符组成,但只算1个。
例如,在这种情况下:char s[]="abc 123"; printf("%d\n",strlen(s)); 输出7。
才符合 这个串的字符个数等于该串的长度。它不含转义字符,有一个隐含的字符串结束符 '\0',没有占内存的多余字符。占内存数 用 sizeof(s) 计算。
例如: char s[]="abc\066123\0XYZ"; printf("%d\n",sizeof(s)); 输出:12 (这是占内存数),它要计入 abc 3个字母 加 1个转义字符\066 加123 三个数字, 再加字符串结束符\0, 加 XYZ, 加 隐含的字符串结束符\0。共 12个字节。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-16
不对,你问的是字符串中字符的个数即是该字符串的长度吧?
这个是不对的,因为每个字符串都是以\n做结尾的,所以串的长度要加一的,还有就是有些转义字符或不可见字符本回答被网友采纳
第2个回答  2019-06-13
“一个串的字符个数即该串的长度”
这句话在串中不包含空字符'\0'时,是正确的。如果包含了空字符,就不对了。
例如: char s[]="123\0ABC";
串中共7个字符,但是串s的长度却是3
第3个回答  2019-01-19

按照定义是对的。但要注意,字符串占用的字节数要比字符串长度加1.

第4个回答  2019-07-31
这个不是绝对的,不同的语言对于字符串的处理也是不同的。
比如通常来说一个英文字母占用1个字节,一个中文占用2个字节
如果 是"A喜欢B",应该是占用了6个字节,字符串的长度是6,但是从字符个数来看确是4个。。当然这是简单的举例子
实际应用来说 不同的编码方式可能占用的字节个数也不同
所以说这个说法是不对的,或者说不是绝对的
相似回答