unsigned char H1[] = "1234567890";unsigned char H2[] = "123456789“
printf("H1 len is %d.\r\n"sizeof(H1));
printf("H2 len is %d.\r\n"sizeof(H2));
输出结果
H1 len is 11.
H2 len is 10.
输出结果比实际长度多1 ,请问问题出在哪里,用什么方法可以准确计算长度
用双引号括起的字符串定义时,默认包含一个‘\0'字符作为结尾,所以上面程序结果是准确的。
因为这个是确定的,你只需要减去1就好。
比如
printf("H1 len is %d.\n" sizeof(H1)-1);printf("H2 len is %d.\n" sizeof(H2)-1);
printf("H1 len is %d.\n" sizeof(H1)-1);
printf("H2 len is %d.\n" sizeof(H2)-1);
另外注意一般的回车只需要\n,\r\n是微软系统的习惯而已。
sizeof函数就是这样的,会加一个变量类型大小的结束符
如果你的变量里面没有\0结束符可以用strlen来计算长度