赞
踩
目录
#include <string.h> //使用字符串库函数
函数原型1:size_t strlen(char const *string);
返回值:返回字符串长度;
函数功能:获得字符串长度,不包括最后的“\0”
函数原型2:size_t strnlen(const char* s, size_t maxlen);;
返回值:返回实际字符串长度或maxlen;
函数功能:获得字符串长度,不包括最后的“\0”.如果实际个数n <= maxlen,则返回n,否则返回第二个参数。
代码如下:
- void strlen()
-
- {
-
- int as,bs;
-
- char a[maxsize];
-
- printf("请输入字符串:\n");
-
- scanf("%s", a);
-
- as=strnlen(a,10);
-
- bs = strlen(a);
-
- printf("字符串长度:%d\n",as);
-
- printf("字符串长度:%d\n", bs);
-
- }
效果截图:
函数原型1:char *strcpy(char *dst, char const *src);
返回值:返回dst拷贝;
函数功能:把参数src字符串拷贝到dst参数中,如果两者内存出现重叠,则结果未定义。
注意点:strcpy函数前一定要确认dst长度不小于src长度
函数原型2:char *strncpy(char *dst, char const *src, size_t len);
返回值:返回dst拷贝;
函数功能:拷贝src指定长度字符到dst目标数组,总是拷贝len个字符。
注意点:当src的的字符长度小于len时,会填充额外的NUL;当src的字符长度大于len时,就会拷贝len个字符到dst中
- void strcpy()
-
- {
-
- char a[maxsize]="different";
-
- char n[maxsize];
-
- char* as,* bs;
-
- printf("请输入字符串:\n");
-
- scanf("%s", &n);
-
- printf("拷贝前结果:%s\n", a);
-
- as = strcpy(a, n);
-
- bs = strncpy(a, n, 10);
-
- printf("拷贝后结果:%s\n", as);
-
- printf("拷贝后结果:%s\n", bs);
-
- }
效果截图:
函数原型1:char *strcat(char *dst, char const *src);
返回值:返回dst拷贝;
函数功能:把src字符串连接到dst字符串后面;
注意点:使用前一定要确认dst数组能同时容纳dst原始字符串和src字符串,否则会内存越界覆盖。
函数原型2:char *strncat(char *dst, char const *src, size_t len);
返回值:返回dst拷贝;
函数功能:把src字符串前n个字符连接到dst字符串后面;
代码如下:
void strcat()
{
char a[maxsize], b[maxsize];
char* as, * bs;
printf("请输入a的字符串:\n");
scanf("%s", a);
printf("请输入b的字符串:\n");
scanf("%s", b);
as = strcat(a, b);
bs = strncat(a, b,5);
printf("b接a结果:%s\n", as);
printf("b接a前5个结果:%s\n", bs);
}
效果截图:
函数原型1:int strcmp(char const *s1, char const *s2);
返回值:如果s1大于s2则返回一个大于0的值;如果s1小于s2则返回一个小于0的值;如果字符串相等则返回0。
函数功能:基于词典比较s1和s2大小。
注意点:s1和s2必须是字符串,即以NUL结尾;大于或小于时的返回值没指定为1和-1,所以判断结果是要注意。
函数原型2:int strncmp(char const *s1, char const *s2, size_t len);
返回值:如果s1大于s2则返回一个大于0的值;如果s1小于s2则返回一个小于0的值;如果字符串相等则返回0。
函数功能:基于词典比较s1和s2最多前len个字符大小。
注意点:同strcmp;如果两个字符串在第len个字节之前存在不相等字符就会和strcmp一样停止比较返回结果,若果到第n个字符都相等,则返回0
代码如下:
void strcmp()
{
int as, bs;
char a[maxsize], b[maxsize];
printf("请输入a的字符串:\n");
scanf("%s", a);
printf("请输入b的字符串:\n");
scanf("%s", b);
as = strcmp(a, b);
bs = strncmp(a, b, 5);
printf("比较结果:%d\n", as);
printf("比较前5个结果:%d\n", bs);
}
效果截图:
函数原型1:char *strchr(char const *str, int ch);
返回值:如果在str字符串中(从左到右)查找到字符ch,则返回ch第一次出现所在位置指针;若没有则返回NULL。
函数功能:在str中正向查找字符ch第一次出现的位置。
函数原型2:char *strrchr(char const *str, int ch);
返回值:如果在str字符串中(从右到左)查找到字符ch,则返回ch第一次出现所在位置指针;若没有则返回NULL。
函数功能:在str中反向查找字符ch第一次出现的位置。
注意点:需要对函数返回值作非空判断。
代码如下:
void strchr()
{
char a[50];
int b;
char* as,*bs;
printf("请输入a的字符串:\n");
scanf("%s", &a);
printf("请输入b的字符串:\n");
scanf("%s", &b);
as = strchr(a,b);
bs = strrchr(a, b);
printf("查找结果:%s\n", as);
printf("查找结果:%s\n", bs);
}
效果截图:
函数原型1char *strstr(const char *haystack, const char *needle);
返回值:该函数返回在a中第一次出现b字符串的位置,如果未找到则返回 null。
函数功能:在字符串a中查找第一次出现字符串b的位置,不包含终止符 '\0'。
代码如下:
void strstr()
{
char a[maxsize];
char b[maxsize];
char* ret;
printf("请输入a的字符串:\n");
scanf("%s", &a);
printf("请输入b的字符串:\n");
scanf("%s", &b);
ret = strstr(a, b);
printf("子字符串是: %s\n", ret);
}
效果截图:
在调用函数strchr时搞不清楚函数参数类型,构想是参数都为char类型,但是有个参数是int型,截图如下:
所以需要修改参数,一个为字符串数组指针类型,另外一个为int型。赋值时通过强制类型转换进行传输。
最后附上源码链接:C语言字符串库常用函数(源码)_徐徐而闻的博客-CSDN博客
希望看到的朋友可以点点赞,在评论区指点一下我这位菜鸟
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。