C语言中
字符串有一个结束符'\0',一个正常的字符串的最后一个字符都是'\0',在你定义一个
常量字符串时就自动帮你加上去了,比如"abc"其实有4个字符{'a', 'b', 'c', '\0'},最后一个'\0'表示字符串到这就结束了,以防止内存读取越界,同时也以此来计算字符串长度,而不是再传一个int参数表示字符串的长度。因此a在内存中长度为6,但由于最后一个字符'\0'只是结束符,所有一般说长度时会忽略掉最后一个字符
string.h中提供了strlen函数可以方便地计算字符串的长度,不过注意strlen
返回值的类型为size_t,x64
下定义为uint64_t,x86下为uint32_t,所以记得进行类型转换
第一种:调用C库函数strlen(
头文件<string.h>)
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *a = "\x12\x00\x11\x00\x00";
printf("%d\r\n", (int)strlen(a));
return 0;
}
第二种:手动计算长度
#include <stdio.h>
int main(int argc, char *argv[])
{
char *a = "\x12\x00\x11\x00\x00";
char* p = a;
while ('\0' != *p)
{
p++;
}
printf("%d\r\n", (int)(p - a));
return 0;
}