当前位置:   article > 正文

C语言字符串库常用函数_c语言 字符串长度 指定编码 计算函数

c语言 字符串长度 指定编码 计算函数

目录

一、字符串库所需头文件

二、计算字符串长度

三、拷贝字符串

四、连接字符串

五、字符串比较

六、字符串查找


一、字符串库所需头文件

#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,否则返回第二个参数。

代码如下:

  1. void strlen()
  2. {
  3. int as,bs;
  4. char a[maxsize];
  5. printf("请输入字符串:\n");
  6. scanf("%s", a);
  7. as=strnlen(a,10);
  8. bs = strlen(a);
  9. printf("字符串长度:%d\n",as);
  10. printf("字符串长度:%d\n", bs);
  11. }

效果截图:

 三、拷贝字符串

函数原型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中

代码如下:

  1. void strcpy()
  2. {
  3. char a[maxsize]="different";
  4. char n[maxsize];
  5. char* as,* bs;
  6. printf("请输入字符串:\n");
  7. scanf("%s", &n);
  8. printf("拷贝前结果:%s\n", a);
  9. as = strcpy(a, n);
  10. bs = strncpy(a, n, 10);
  11. printf("拷贝后结果:%s\n", as);
  12. printf("拷贝后结果:%s\n", bs);
  13. }

效果截图:


四、连接字符串

函数原型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博客

希望看到的朋友可以点点赞,在评论区指点一下我这位菜鸟

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/694018
推荐阅读
相关标签