1、strlen函数
头文件:#include
函数原型:size_t strlen(const char *s);
功能:计算字符串s的长度,不包括’\0’。
参数:s表示指向被计算的字符串的首地址。
返回值:返回字符串中字符的个数。
补充:strlen和sizeof的区别
相同点:
sizeof与strlen都可以计算空间大小。
不同点:
(1)sizeof计算字符串时,以保存字符串的空间大小为准;strlen计算时,以字符串中字符个数为准,不包括’\0’,
参数只能是字符数组或者字符指针。
(2)sizeof是关键字、运算符;strlen是函数。
(3)sizeof可以计算变量、常量、表达式、指针、数组、结构体、字符串等;strlen只能用来计算字符串。
strlen实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <stdio.h> int main(int argc,char *argv[]) { char str[] = "hello world!"; int count = 0; while(str[count] != '\0') { count++; } printf("length = %d\n",count);//length = 12 return 0; } |
2、strcpy函数
头文件: #include
函数原型:char *strcpy(char *dest, const char *src);
参数:src、dest表示指向两个字符串的首地址。
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间。
返回值:返回dest指针指向的字符串。
strcpy实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> int main(int argc,char *argv[]) { char str1[32] = "hello world!"; char str2[32] = "abcd"; int i = 0,j = 0; while(str2[j] != '\0') { str1[i] = str2[j]; i++; j++; } str1[i] = '\0'; printf("str1 = %s\n",str1);//str1 = abcd return 0; } |
3、strcat函数
头文件: #include
函数原型:char *strcat(char *dest, const char *src);
参数:dest、src表示指向两个字符串的首地址。
功能:将src字符串追加到dest字符串,覆盖dest末尾的终止空字节(’\0’),然后添加一个终止空字节(’\0’)。
返回值:返回dest指针指向的字符串。
strcat实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h> int main(int argc,char *argv[]) { char str1[32] = "hello world!"; char str2[32] = "hello world!"; int i = 0,j = 0; while(str1[i] != '\0') { i++; } while(str2[j] != '\0') { str1[i++] = str2[j++]; } str1[i] = '\0'; printf("str1 = %s\n",str1);//str1 = hello world!hello world! return 0; } |
4、strcmp函数
头文件: #include
函数原型: int strcmp(const char *s1, const char *s2);
参数:s1、s2表示指向两个字符串的首地址。
功能:比较两个字符串。
返回值::返回一个小于、等于或大于零的整数。
补充:
如果返回值小于 0,则表示 str1 小于 str2。
如果返回值等于 0,则表示 str1 等于 str2。
如果返回值大于 0,则表示 str1 大于 str2。
strcmp实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #include <stdio.h> int main(int argc,char *argv[]) { char str1[32] = "hello "; char str2[32] = "hello world!"; int i = 0,j = 0; while(str1[i] != '\0' && str2[j] != '\0') { if(str1[i] > str2[j]) { printf("1\n"); return 0; } else if(str1[i] < str2[j]) { printf("-1\n"); return 0; } else { i++; j++; } } if(str1[i] != '\0' && str2[j] == '\0') { printf("1\n"); } if(str1[i] == '\0' && str2[j] != '\0') { printf("-1\n"); } if(str1[i] == '\0' && str2[j] == '\0') { printf("0\n"); } return 0;//最终运行结果:-1 } |