百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

C(string.h)字符串操作函数总结

liebian365 2024-11-20 18:24 3 浏览 0 评论

1.strcpy函数

原型:strcpy(str1,str2);

功能:将字符串str2复制到字符串str1中,并覆盖str1原始字符串,可以用来为字符串变量赋值

返回:str1

注意:1)字符串str2会覆盖str1中的全部字符,2)字符串str2的长度不能超过str1

char str1[] = "We are csdn!";
char str2[] = "Hello!";
strcpy_s(str1, str2); //str = Hello!

2.strncpy函数

原型:strncpy(str1,str2,n);

功能:将字符串str2中的前n个字符复制到字符串str1的前n个字符中

返回:str1

注意:1)不会清除str1中全部字符串,只会改变前n个字符串,2)n不能大于字符串str1、str2的长度

3)但是如果使用strncpy_s便会清除str1中的全部字符串

strncpy:

char str1[] = "We are csdn!";
char str2[] = "Hello!";
strncpy(str1, str2, 3);
printf("str1 = %s\n", str1); //str1 = Helare csdn!

strncpy_s:

char str1[] = "We are csdn!";
char str2[] = "Hello!";
strncpy_s(str1, str2, 3);
printf("str1 = %s\n", str1); //str1 = Hel

3.strcat函数

原型:strcat(str1,str2);

功能:将字符串str2添加到字符串str1的尾部,也就是拼接两个字符串

原型2:strncat(str1,str2,n);

功能2:将字符串str2的前n个字符添加到字符串str1的尾部

返回:str1

注意:拼接之后的长度不能超过字符串数组str1的长度

char str1[20] = "We are csdn!";
char str2[] = "Hello!";
strcat_s(str1, str2);
printf("str1 = %s\n", str1); //str1 = We are csdn!Hello!

4.strlen函数

原型:strlen(str1);

功能:计算字符串str1的长度

返回:一个int值

注意:字符串的长度不包括字符'\0'

char str1[20] = "We are csdn!";
int size = strlen(str1);
printf("%d\n", size); //size = 12

5.strcmp函数

原型:strcmp(str1,str2);

功能:比较两个字符串,如果两个字符串相等,则返回0;若str1大于str2(对于大于的理解,是指从两个字符串的第一个字符开始比较,若两个字符相同,则继续比较,若发现两个字符不相等,且str1中该字符的ASCII码大于str2中的,则表示str1大于str2),返回一个正数(这个正数不一定是1);若str1小于str2,返回一个负数(不一定是-1);若字符串str1的长度大于str2,且str2的字符与str1前面的字符相同,则也相对于str1大于str2处理

原型2:strncmp(str1,str2,n);

功能2:比较两个字符串的前n个字符

原型3:stricmp(str1,str2); (在Windows中使用stricmp,在Linux中使用strcasecmp)

功能3:忽略两个字符串中的大小写比较字符串,也就是对大小写不敏感

注意:如果在VS2017中直接使用stricmp会提示如下错误:

原因和处理办法见:stricmp错误,即用_stricmp代替

返回:0或一个正数或一个负数

char str1[] = "Wearecsdn!";
char str2[] = "Wearecsdn!";
char str3[] = "Wearea!";
char str4[] = "Wearef!";
char str5[] = "Weare";
char str6[] = "weAreCsdn!";
int cmp1 = strcmp(str1, str2); //cmp1=0
int cmp2 = strcmp(str1, str3); //cmp2=1
int cmp3 = strcmp(str1, str4); //cmp3=-1
int cmp4 = strcmp(str1, str5); //cmp4=1
int cmp5 = strncmp(str1, str2, 5); //cmp5=0
int cmp6 = strncmp(str1, str3, 5); //cmp6=0
int cmp7 = strncmp(str1, str4, 5); //cmp7=0
int cmp8 = strncmp(str1, str5, 5); //cmp8=0
int cmp9 = _stricmp(str1, str6); //cmp9=0

6.strchr函数

原型:strchr(str,c);

功能:在str字符串中查找首次出现字符c的位置(从字符串的首地址开始查找)

原型2:strrchr(str,c);

功能2:在字符串str中从后向前开始查找字符c首次出现的位置

原型3:strstr(str1,str2);

功能3:在字符串str1中查找字符串str2的位置,若找到,则返回str2第一个字符在str1中的位置的指针,若没找到,返回NULL

返回:字符c的位置的指针,若没有查找到字符c,则返回空指针NULL

char str1[] = "Wearecsdn!";
char ch = 'e';
char str2[] = "are";
char* ret1;
char* ret2;
char* ret3;
ret1 = strchr(str1, ch); //ret1 = earecsdn!
ret2 = strrchr(str1, ch); //ret2 = ecsdn!
ret3 = strstr(str1, str2); //ret3 = arecsdn!
int r1 = ret1 - str1; //r1 = 1
int r2 = ret2 - str1; //r2 = 4
int r3 = ret3 - str1; //r3 = 2
printf("%s\n%s\n%s\n", ret1, ret2, ret3);
printf("%d\n%d\n%d\n", r1, r2, r3);

7.strpbrk函数

原型:strpbrk(str1,str2);

功能:依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置

返回:第一个两个字符串中都包含的字符在str1中的位置的指针

char str1[] = "We12are34csdn!";
char str2[] = "32";
char* ret1;
ret1 = strpbrk(str1, str2); //*ret1 = 2
int r1 = ret1 - str1; //r1 = 3
printf("%c\n", *ret1);
printf("%d\n", r1);

8.strspn函数

原型:strspn(str1,str2);

功能:检索字符串str1中第一个不在字符串str2中出现的字符下标

返回:返回 str1 中第一个不在字符串 str2 中出现的字符下标,一个int整数值

char str1[] = "We12are34csdn!";
char str2[] = "We32are1";
int len;
len = strspn(str1, str2); //len = 8
printf("%d\n", len);

9.strcspn函数

原型:strcspn(str1,str2);

功能:检索字符串str1开头连续有几个字符都不含字符串str2中的字符

返回:返回 str1 开头连续都不含字符串 str2 中字符的字符数,一个int整数值

char str1[] = "We12are34csdn!";
char str2[] = "32";
int len;
len = strcspn(str1, str2); //len = 3
printf("%d\n", len);

*************************************************************************************************************************************

strpbrk、strcspn、strspn三个函数的区别:strpbrk是在字符串str1中查找第一个在字符串str2中也包含的字符的位置,返回该字符在str1中的位置指针,而strcspn返回的是该字符在str1中的偏移位置,strspn是在str1中查找第一个在str2不包含的字符的位置,返回该字符在str1中的偏移位置

*************************************************************************************************************************************

string.h中还提供以下几种常用字符串操作函数:

1)void *memchr(const void *str, int c, size_t n) 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置,相似于strchr函数

2)int memcmp(const void *str1, const void *str2, size_t n)) 把存储区 str1 和存储区 str2 的前 n 个字节进行比较,相似于strncmp函数

3)void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字符到存储区 str1,相似于strncpy函数

4)void *memmove(void *str1, const void *str2, size_t n) 从 str2 复制 n 个字符到 str1,但是在重叠内存块这方面,memmove() 是比 memcpy() 更安全的方法。如果目标区域和源区域有重叠的话,memmove() 能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,复制后源区域的内容会被更改。如果目标区域与源区域没有重叠,则和 memcpy() 函数功能相同

5)void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符

具体使用方法参考:C标准库<string.h>,以及C语言字符串操作总结

*************************************************************************************************************************************

10.atoi、atof、atol函数

atoi(str); //字符串转换到int整型

atof(str); //字符串转换到double浮点数

atol(str); //字符串转换到long整形

char str[] = "123.34";
int chint = atoi(str); //chint = 123
double chdouble = atof(str); //chdouble = 123.340000
long int chlong = atol(str); //chlong = 123
printf("%d\n%f\n%d\n", chint, chdouble, chlong);

最后,如果你想学C/C++可以私信小编“01”获取素材资料以及开发工具和听课权限哦!

相关推荐

快递查询教程,批量查询物流,一键管理快递

作为商家,每天需要查询许许多多的快递单号,面对不同的快递公司,有没有简单一点的物流查询方法呢?小编的回答当然是有的,下面随小编一起来试试这个新技巧。需要哪些工具?安装一个快递批量查询高手快递单号怎么快...

一键自动查询所有快递的物流信息 支持圆通、韵达等多家快递

对于各位商家来说拥有一个好的快递软件,能够有效的提高自己的工作效率,在管理快递单号的时候都需要对单号进行表格整理,那怎么样能够快速的查询所有单号信息,并自动生成表格呢?1、其实方法很简单,我们不需要一...

快递查询单号查询,怎么查物流到哪了

输入单号怎么查快递到哪里去了呢?今天小编给大家分享一个新的技巧,它支持多家快递,一次能查询多个单号物流,还可对查询到的物流进行分析、筛选以及导出,下面一起来试试。需要哪些工具?安装一个快递批量查询高手...

3分钟查询物流,教你一键批量查询全部物流信息

很多朋友在问,如何在短时间内把单号的物流信息查询出来,查询完成后筛选已签收件、筛选未签收件,今天小编就分享一款物流查询神器,感兴趣的朋友接着往下看。第一步,运行【快递批量查询高手】在主界面中点击【添...

快递单号查询,一次性查询全部物流信息

现在各种快递的查询方式,各有各的好,各有各的劣,总的来说,还是有比较方便的。今天小编就给大家分享一个新的技巧,支持多家快递,一次能查询多个单号的物流,还能对查询到的物流进行分析、筛选以及导出,下面一起...

快递查询工具,批量查询多个快递快递单号的物流状态、签收时间

最近有朋友在问,怎么快速查询单号的物流信息呢?除了官网,还有没有更简单的方法呢?小编的回答当然是有的,下面一起来看看。需要哪些工具?安装一个快递批量查询高手多个京东的快递单号怎么快速查询?进入快递批量...

快递查询软件,自动识别查询快递单号查询方法

当你拥有多个快递单号的时候,该如何快速查询物流信息?比如单号没有快递公司时,又该如何自动识别再去查询呢?不知道如何操作的宝贝们,下面随小编一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号若干...

教你怎样查询快递查询单号并保存物流信息

商家发货,快递揽收后,一般会直接手动复制到官网上一个个查询物流,那么久而久之,就会觉得查询变得特别繁琐,今天小编给大家分享一个新的技巧,下面一起来试试。教程之前,我们来预览一下用快递批量查询高手...

简单几步骤查询所有快递物流信息

在高峰期订单量大的时候,可能需要一双手当十双手去查询快递物流,但是由于逐一去查询,效率极低,追踪困难。那么今天小编给大家分享一个新的技巧,一次能查询多个快递单号的物流,下面一起来学习一下,希望能给大家...

物流单号查询,如何查询快递信息,按最后更新时间搜索需要的单号

最近有很多朋友在问,如何通过快递单号查询物流信息,并按最后更新时间搜索出需要的单号呢?下面随小编一起来试试吧。需要哪些工具?安装一个快递批量查询高手快递单号若干怎么快速查询?运行【快递批量查询高手】...

连续保存新单号功能解析,导入单号查询并自动识别批量查快递信息

快递查询已经成为我们日常生活中不可或缺的一部分。然而,面对海量的快递单号,如何高效、准确地查询每一个快递的物流信息,成为了许多人头疼的问题。幸运的是,随着科技的进步,一款名为“快递批量查询高手”的软件...

快递查询教程,快递单号查询,筛选更新量为1的单号

最近有很多朋友在问,怎么快速查询快递单号的物流,并筛选出更新量为1的单号呢?今天小编给大家分享一个新方法,一起来试试吧。需要哪些工具?安装一个快递批量查询高手多个快递单号怎么快速查询?运行【快递批量查...

掌握批量查询快递动态的技巧,一键查找无信息记录的两种方法解析

在快节奏的商业环境中,高效的物流查询是确保业务顺畅运行的关键。作为快递查询达人,我深知时间的宝贵,因此,今天我将向大家介绍一款强大的工具——快递批量查询高手软件。这款软件能够帮助你批量查询快递动态,一...

从复杂到简单的单号查询,一键清除单号中的符号并批量查快递信息

在繁忙的商务与日常生活中,快递查询已成为不可或缺的一环。然而,面对海量的单号,逐一查询不仅耗时费力,还容易出错。现在,有了快递批量查询高手软件,一切变得简单明了。只需一键,即可搞定单号查询,一键处理单...

物流单号查询,在哪里查询快递

如果在快递单号多的情况,你还在一个个复制粘贴到官网上手动查询,是一件非常麻烦的事情。于是乎今天小编给大家分享一个新的技巧,下面一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号怎么快速查询?...

取消回复欢迎 发表评论: