一.strlen
1.头文件:#include<string.h>
2.返回值:(无符号int)字符串长度
3.作用:计算字符串的长度
4.与sizeof的区分:sizeof是求大小的 这里用一道例题来说明
1 #include<stdio.h> 2 #include<string.h> 3 4 int main() 5 { 6 char str1[] = "abcde"; 7 int a = strlen(str1); //5 8 int b = sizeof(str1); //6 9 10 char* str2 = "abcde"; 11 int c = strlen(str2); //5 12 int d = sizeof(str2); //4 在32位操作系统中 指针的大小固定就是4 13 14 return 0; 15 }
5.长度函数输出实现练习
1 #include<stdio.h> 2 #include<string.h> 3 4 size_t MyStrlen(char* str); 5 6 int main() 7 { 8 char str[] = "abcd"; 9 int a = MyStrlen(str); 10 11 printf("%d\n",a); 12 return 0; 13 } 14 15 size_t MyStrlen(char* str) 16 { 17 size_t count = 0; 18 if(*str == NULL) 19 { 20 return -1; 21 } 22 23 while(*str != ‘\0‘) 24 { 25 count ++; 26 *str ++; 27 } 28 29 return count; 30 }
注:size_t是无符号int类型
二.strcpy(有点不安全)
1.头文件:#include<string.h>
2.返回值:目标字符串的首地址
3.使用方法:strcpy(目标,源);
例:
1 #include<stdio.h> 2 #include<string.h> 3 4 int main() 5 { 6 char* str = "abcd"; 7 char str1[5]; 8 char* p = strcpy(str1,str); 9 10 printf("%s\n",p); 11 return 0; 12 }
需要注意的是:在定义目标字符串的时候 所给的空间应该是足够大的 不够大的话会崩 目标一定要大于等于源!!!
4.作用:将第二个参数(源字符串中的内容)拷贝到第一个(目标数组)中 并且返回目标字符串的首元素地址
5.拷贝函数实现练习
1 #include<stdio.h> 2 #include<string.h> 3 4 char* MyStrcpy(char* str1,const char* str2); 5 6 int main() 7 { 8 char str1[5]; //不写方括号它就是个变量啊! 9 char* str2 = "abcd"; 10 11 char* p = MyStrcpy(str1,str2); 12 13 printf("%s\n",p); 14 return 0; 15 } 16 17 char* MyStrcpy(char* str1,const char* str2) 18 { 19 char* p = str1; 20 21 if(str1 == NULL || str2 == NULL) //也得判断str1是不是空的啊 因为它也应该是有空间的! 22 { 23 return NULL; 24 } 25 else if(strlen(str1)+1 < strlen(str2)+1) 26 { 27 return NULL; 28 } 29 30 while(*str2 != ‘\0‘) 31 { 32 *str1 ++ = *str2 ++; 33 } 34 35 *str1 = ‘\0‘; 36 return p; 37 }
三.strcpy_s
1.使用方法:strcpy_s(目标,目标空间大小,源);
1 #include<stdio.h> 2 #include<string.h> 3 4 int main() 5 { 6 char* str = "abcd"; 7 char str1[5]; 8 9 strcpy_s(str1,5,str); 10 11 printf("%s\n",str1); 12 13 return 0; 14 }
注:目标空间大小要和前面目标的大小保持一致
2.返回值:(int类型)0代表成功拷贝
四.strncpy
1.使用方法:strncpy(目标,源,拷贝个数);
2.返回值:char*
3.函数实现:
1 #include<stdio.h> 2 #include<string.h> 3 4 char* MyStrncpy(char* str1,const char* str2,int n); 5 6 int main() 7 { 8 char str1[5]; 9 char* str2 = "abcd"; 10 int n = 2; 11 12 char* p = MyStrncpy(str1,str2,n); 13 14 printf("%s\n",p); 15 } 16 17 char* MyStrncpy(char* str1,const char* str2,int n) 18 { 19 char* p = str1; 20 int i; 21 22 if(str1 == NULL || str2 ==NULL) 23 { 24 return NULL; 25 } 26 else if(strlen(str1)+1 < strlen(str2)+1) 27 { 28 return NULL; 29 } 30 31 for(i=0;i<n;i++) 32 { 33 *str1 ++ = *str2 ++; 34 } 35 36 *str1 = ‘\0‘; 37 return p; 38 }
五.strcat
1.使用方法:strcat(目标,源);
2.作用:字符串拼接 把源拼接到目标的后面
3.返回值:char*
4.函数实现:
1 #include<stdio.h> 2 #include<string.h> 3 4 char* MyStrcat(char* str1,const char* str2); 5 6 int main() 7 { 8 char str1[10] = "abc"; 9 char* str2 = "def"; 10 11 char* p = MyStrcat(str1,str2); 12 printf("%s\n",p); 13 14 return 0; 15 } 16 17 char* MyStrcat(char* str1,const char* str2) 18 { 19 char* p = str1; 20 21 if(str1 == NULL || str2 == NULL) 22 { 23 return NULL; 24 } 25 26 while(*str1 != ‘\0‘) 27 { 28 *str1 ++; 29 } 30 while(*str2 != ‘\0‘) 31 { 32 *str1++ = *str2++; 33 } 34 *str1 = ‘\0‘; 35 36 return p; 37 }
六.strcat_s
1.使用方法:strcat_s(目标,源,目标大小);
1 #include<stdio.h> 2 #include<string.h> 3 4 int main() 5 { 6 char str1[10] = "abc"; 7 char* str2 = "abcd"; 8 9 int p = strcat_s(str1,sizeof(str1),str2); 10 printf("%d\n",p); 11 12 return 0; 13 }
注:剩下的空间应该大于源的空间
2.返回值:(int类型) 0代表拼接成功
原文地址:https://www.cnblogs.com/Aaaaaalei0612/p/8732798.html
时间: 2025-01-17 12:39:06