自定义C语言中常用的字符串操作函数
程序员文章站
2022-06-24 23:30:34
C语言中提供了许多的字符串操作函数,常见的字符串操作函数有以下几种: 1,求字符串长度的函数 原型函数:strlen(字符串名称); 实现原理:将字符串名称传入该函数,该函数会遍历该字符串,最后将长度返回给我们,注意返回的长度不包括'\0'; 2,字符串拷贝函数 原型函数:strcpy(字符串1名称 ......
c语言中提供了许多的字符串操作函数,常见的字符串操作函数有以下几种:
1,求字符串长度的函数
原型函数:strlen(字符串名称);
实现原理:将字符串名称传入该函数,该函数会遍历该字符串,最后将长度返回给我们,注意返回的长度不包括'\0';
2,字符串拷贝函数
原型函数:strcpy(字符串1名称, 字符串2名称);
实现原理:该函数需要传入两个字符串名称,所谓拷贝其实是指将字符串2所包含的元素,复制到字符串1中,注意
这里的复制其实也包含覆盖的意思,字符串1中原来的元素会被覆盖掉;
3,字符串拼接函数
原型函数:strcat(字符串1名称, 字符串2名称);
实现原理:该函数也需要传入两个字符串名称,所谓拼接其实是指将字符串2所包含的元素,拼接到字符串1的后面;
4,字符串比较函数
原型函数:strcmp(字符串1名称, 字符串2名称);
实现原理:该函数也是需要传入两个字符串的名称的,然后同时遍历两个字符串,每次都分别从这两个字符串中取出一个字符,
再比较这两个字符的ascii码,如果从字符串1中取出的字符的ascii码比从字符串2中取出的ascii码要大,那么该函数就会返回 1,
如果小的话该函数就会返回 -1,如果取到了两个字符串的最后一个字符,每一个字符的ascii码都是相等的,那么该函数就会返回 0。
了解完这几个字符串操作函数的原理之后,我们就可以不使用c语言提供的库函数,自己自定义这几个函数了;
具体代码如下:
#include <stdio.h> //函数声明 int mystrlen(char str[]); void mustrcpy(char str1[], char str2[]); void mystrcat(char str1[], char str2[]); int mystrcmp(char str1[], char str2[]); int main() { char str1[] = "tomhe789"; char str2[] = "tomhe"; char str3[] = "789"; char str4[] = "abcde"; char str5[] = "abcde"; //打印str1的长度 printf("str1len = %d\n", mystrlen(str1)); //8 //将str2拷贝到str1中 mustrcpy(str1, str2); printf("str1 = %s\n",str1); //tomhe //将str3拼接到str2后面 mystrcat(str2, str3); printf("str2 = %s\n",str2); //tomhe789 //打印出 mystrcmp(str4, str5)的结果 printf("res = %d", mystrcmp(str4, str5)); //0 return 0; } //自定义字符串长度函数 int mystrlen(char str[]){ int len = 0; while (str[len] != '\0') { len++; } return len; } //自定义字符串拷贝函数 void mustrcpy(char str1[], char str2[]) { int len = 0; while (str2[len] != '\0' || str1[len] != '\0') { str1[len] = str2[len]; len++; } str1[len] = '\0'; } //自定义字符串拼接函数 void mystrcat(char str1[], char str2[]) { int len = 0; int len1 = 0; while (str1[len] != '\0') { len++; } while (str2[len1] != '\0') { str1[len] = str2[len1]; len++; len1++; } str1[len] = '\0'; } //自定义字符串比较函数 int mystrcmp(char str1[], char str2[]) { int len = 0; while (str1[len]!='\0' || str2[len]!='\0') { if(str1[len] > str2[len]) return 1; else if(str1[len] < str2[len]) return -1; else len++; } return 0; }