作者:喜欢猫咪的的程序员
专栏:《C语言》
喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》
目录
前言:什么是字符串函数?
字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数,如C,pascal,Visual以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数。
字符串函数:
- 求字符串长度
- strlen
- 长度不受限制的字符串函数
- strcpy
- strcat
- strcmp
- 长度受限制的字符串函数介绍
- strncpy
- strncat
- strncmp
- 字符串查找
- strstr
- strtok
- 错误信息报告
- strerror
- 字符操作
- 内存操作函数
- memcpy
- memmove
- memset
- memcmp
- atoi函数
strlen函数:
strlen介绍:
用处:计算字符串长度。
参数:str为char*的指针(地址),为字符串的起始地址。
返回值:为size_t,为 字符串的长度。
头文件为:
#include<string.h>
strlen的注意点:
- 注意函数的返回值为size_t,是无符号的( 易错 )
- 参数指向的字符串必须要以 '\0' 结束。
strlen的使用:
例子代码:
int main() { char p[20] = "asasf"; int q = strlen(p); printf("%d", q); return 0; }
运行结果:
strlen与sizeof的区别:
我们知道strlen和sizeof都是计算数据大小的。
我们来说一下:strlen和sizeof异同点。
相同点:
sizeof和strlen的返回值都是size_t(ize_t的全称应该是size type,就是说一种用来记录大小的数据类型‘)。
不同点:
- strlen是一个库函数,而sizeof是一个操作符。
- sizeof是计算数据占用内存的大小,单位是字节。strlen是字符串长度,只能运用于字符串。
sizeof和strlen在计算字符串时的不同计算方式:
- strlen是只能用来计算字符串的长度的,计算\0前面有几个数(不包括\0),\0前面有几个数strlen的结果就是几。
- sizeof不止可以用来计算字符串的长度,计算int类型的占用的字节大小也可以。sizeof计算的是字符串在内存中占用几个字节。会包括/0
详细部分以及示例可看我的例外一篇博客:
(4条消息) C语言语言:探究sizeof和strlen的区别_一个喜欢猫咪的程序员的博客-CSDN博客
https://blog.csdn.net/m0_69061857/article/details/126288232?spm=1001.2014.3001.5501
strlen的模拟实现:
原理:
我们只要定义一个个数,每遇到一个字符,个数++就好,'\0'不要个数++就好。
模拟实现:
#include<stdio.h> size_t my_strlen(const char* str) { int count = 0; while (*str) { count++; str++; } return count; } int main() { char* ch="abcdefgh";//需要计算的字符串 int sz = my_strlen(ch); printf("%d\n", sz); return 0; }
运行结果:
strcpy函数:
strcpy介绍:
用处:用于字符串复制,将一个字符串复制给例外一个字符串,
参数 :两个参数,第一个参数是目标字符串的指针(地址),第二个是要复制的字符串的指针(地址),都为char*类型。
返回值:为char*类型,为目标字符串的首字符的指针(地址)。
头文件:#include<string.h>
strcpy函数的注意点:
- 会将要复制的字符串中的 '\0' 拷贝到目标字符串。
- 目标空间必须足够大,以确保能存放源字符串。
- 目标空间必须可变。不能是常量字符串
strcpy函数的使用:
例子代码:
int main() {//strcpy的使用 char p1[20] ;//目标字符串 char p2[10] = "qqqqq";//要复制的字符串 strcpy(p1, p2); printf("%s", p1); return 0; }
运行结果:
strcpy的模拟实现:
原理:
我们要将要复制的字符串中的字符一个个赋值给目标字符串,记得'\0'也要赋过去哦。
模拟实现:
#include<string.h> void my_strcpy(char a1[], char a2[]) { for (int i = 0; i < strlen(a1); i++) { a1[i] = a2[i]; } } int main() {//strcpy的模拟实现 char a1[] = "xxxxxxxxxx";//目标字符串 char a2[] = "abcdef";//要复制的字符串 printf("%s\n", a1); my_strcpy(a1,a2); printf("%s\n", a1); return 0; }
运行结果: