C语言中如何获取数据长度?

C语言中如何获取 char *a = "\x12\x00\x11\x00\x00"; 的长度(长度实际为5)?
int main(int argc, char *argv[])
{
char *a = "\x12\x00\x11\x00\x00";

printf("%d\r\n", xxxx);
}

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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-07-27
用strlen函数
相似回答