strlen函数返回值为size_t类型,也就是unsigned int类型, 无符号数,永远大于零
看例子
1 #include <stdio.h>
2 #include <string.h>
3 int main()
4 {
5 char *buf_a = "abcdefg";
6 char *buf_b = "aaaaaaaaaa";
7 printf("buf_a = %d\n", strlen(buf_a));
8 printf("buf_b = %d\n", strlen(buf_b));
9
10 printf("buf_a - buf_b = %d\n", strlen(buf_a) - strlen(buf_b));
11 int len = strlen(buf_a) - strlen(buf_b);
12 printf("%d\n", len);
13 if(len > 0)
14 {
15 printf("adf\n");
16 }
17 if(strlen(buf_a) - strlen(buf_b) > 0)
18 {
19 printf("adfadf\n");
20 }
21 return 0;
22 }
看结果
buf_a = 7
buf_b = 10
buf_a - buf_b = -3
-3
adfadf
千万不要像17行这么判断,原因你懂的,要将其转换为有符号的形式,如11行所示
本文深入探讨了strlen函数的基本用法,通过实例展示了如何正确使用该函数,并指出了一个常见的错误判断方式及其原因。
4876

被折叠的 条评论
为什么被折叠?



