公司建网站多少钱一个,深圳网站制作公司售后,有没有专做水果网站,网页设计教程课本前言#xff1a; 在学习C语言的过程中#xff0c;字符串、字符数组等对新手来说总是会有疏忽#xff0c;在已有的库函数中#xff0c;我们平时用到最多的就是关于字符串的函数#xff0c;今天我们就来详细学习字符串函数的相关内容。 下面我们就开始讲解字符串函数#x…前言 在学习C语言的过程中字符串、字符数组等对新手来说总是会有疏忽在已有的库函数中我们平时用到最多的就是关于字符串的函数今天我们就来详细学习字符串函数的相关内容。 下面我们就开始讲解字符串函数讲解的主要内容为字符串函数的用法及其模拟实现 1.strlen函数的使用和模拟实现
size_t strlen ( const char * str); 1、strlen函数是用来求字符串长度的函数它的参数必须是字符串的地址并且是以’\0‘作为结束标志 2、strlen函数的返回类型是无符号整形所以两个strlen(arr1)-strlen(arr2)的结果不可能为负数这样比较字符串长度的方式是不对的 3、strlen函数所需要的头文件为string.h strlen函数的应用
#includestdio.h
#includestring.h
int main()
{char arr1[] abcdef;char arr2[] bbbbb;if (strlen(arr1) - strlen(arr2) 0)/*这就是上面提到的错误因为strlen返回类型为无符号整型所以当这两个数相减为负值时实际上在内存中是一个很大的正整数*/{printf(\n);}else{printf(\n);}return 0;
}
strlen函数的模拟实现
方法1
//创建临时变量
int my_strlen(const char* str)
{int count 0;assert(str);while (*str ! \0){count;str;}return count;
}
方法2
//使用递归
int my_strlen(const char* str)
{assert(str);if (*str \0)return 0;elsereturn 1 my_strlen(str);
}
方法3
//指针-指针
int my_strlen(const char* str)
{assert(str);char* p str;while (*str ! \0){str;}return str - p;
}
上面的几种模拟实现strlen函数的方法都涉及到assert函数如果有不理解可以看我之前一篇C语言——assert函数
2.strcpy函数的使用及模拟实现
char* strcpy(char * des,const char * source ); 1、strcpy函数返回类型为指针 2、strcpy函数会将源字符串后第一个\0一并复制到目标字符串 3、目标字符串的空间必须足够大不然容易造成溢出 strcpy函数的使用
#includestdio.h
#includestring.h
int main()
{char arr1[] abcdef;char arr2[20] { 0 };strcpy(arr2, arr1);printf(%s\n, arr2);return 0;
}
strcpy函数的模拟实现
char* my_strcpy(char* arr2, const char* arr1)//函数返回类型为指针
{assert(arr1 arr2);//确保arr1和arr2都不为空char* p arr2;while (*arr2 *arr1)//将arr1中的值一个一个传给arr2{;}return p;//返回arr2的原地址
}
3.strcat函数的使用及模拟实现
char* strcpy(char * des,const char * source ); strcat函数返回类型及使用要求与strcpy函数基本一致可以看上面的 strcat函数的使用
#includestdio.h
#includestring.h
int main()
{char arr1[20] I am ;//arr1空间要足够大char arr2[] zhangsan;strcat(arr1, arr2);printf(%s\n, arr1);return 0;
}
strcat函数的模拟实现
char* my_strcat(char* arr1, const char* arr2)
{assert(arr1 arr2);char* p arr1;while (*arr1 ! \0){arr1;}while (*arr2 ! \0){*arr1 *arr2;arr1;arr2;}return p;//返回arr1的原地址
}
4.strcmp函数的使用及模拟实现
int strcmp(const char * arr1,const char * arr2 ); strcmp函数返回类型是整形大于返回整数小于返回负数等于返回0 strcmp函数的使用
#includestdio.h
#includestring.h
int main()
{char arr1 abcdef;char arr2 bbbbb;int ret strcmp(arr1, arr2);if (ret 0){printf(\n);}else if (ret 0){printf(\n);}else{printf(\n);}return 0;
}
strcmp函数的模拟实现
int my_strcmp(const char* arr1, const char* arr2)
{asssrt(arr1 arr2);while (*arr1 *arr2){if (*arr1 \0)return 0;arr1;arr2;}return *arr2 - *arr1;
}
5.字符转换函数
C语言提供两种字符转换函数
char towlower(char c);//将传进去的大写字母转换成小写字母
char towupper(char c);//将传进去的小写字母转换成大写字母
函数使用
#includestdio.h
#includestring.h
int main()
{printf(%c\n, towlower(A));printf(%c\n, towupper(a));return 0;
} 上面几个函数就是C语言中用的最多的几个字符串函数在下一篇我们将继续探索C语言中更多的字符串函数欲知后事还请点赞加关注在接下来的一篇我们将一同探索strstr、strtok、strerror等更多字符串函数。
创作不易还请一键三连