怎么算一个字符指针指向的字符串带有\0的长度?
比如 char *s = “abcd\0efg”;
怎么算指针 s所指的字符串的长度? strlen(s)=4 sizeof(s)=4 sizeof(*s)=1 显然这种情况这两个函数都不能正确的算出长度? 有说知道 怎么能简单的算出来吗? 谢谢!!
[解决办法]
字符串中间有0叫人怎么算???
strlen都是求以0结束的字符串的.除非你事先知道字符串里面有多少个0,否则不能算.
例:
char *s = “abcd\0efg”;
int n = strlen(s);
int m = n + strlen(s + n);//假设只有两个0
另外sizeof( “abcd\0efg”);也可以求出大小 .包括0;
[解决办法]
strlen(s)=4 表示s指针指向的字符串长度,计算长度时遇到'\0’结束,长度不包括'\0’;
sizeof(s)=4 表示s指针占多少字节!在32位系统中,指针占4个字节;
sizeof(*s)=1 表示s指针指向的类型占多少字节!即char类型占多少字节,实际中char占1个字节.
[解决办法]
strlen(s) = 4就是s所指的字符串的长度啊
[解决办法]
++ 遇到\0结束