学习字符串函数这一篇就够了

目录

一、求字符串长度

1.strlen

二、长度不受限制的字符串函数 

1.strcpy

2.strcat

3.strcmp

三、长度受限制的字符串函数

1.strncpy

2.strncat 

3.strncmp

四、字符串查找

1.strstr

2.strtok

五、错误信息报告 

1.strerror

 2.perror


一、求字符串长度

1.strlen

功能:以'\0'作为结束标志,计算'\0'之前字符的个数(不包含'\0')。 

注意:函数的返回值是size_t,是无符号的。

举例:

注意:

#include<stdio.h>
#include<string.h>
int main()
{
 const char*str1 = "abcdef";
 const char*str2 = "bbb";
 if(strlen(str2)-strlen(str1)>0)
 {
 printf("str2>str1\n");
 } 
 else
 {
 printf("srt1>str2\n");
 }
 return 0;
}

输出结果:str2>str1。因为strlen返回值是无符号的,所以一定会是一个大于0的数。 

二、长度不受限制的字符串函数 

1.strcpy

功能:将source中的字符串拷贝到destination中,包括'\0'。 

注意:

•源字符串必须以 '\0' 结束。

•目标空间必须足够大,以确保能存放源字符串。

•目标空间必须可变。

举例:

2.strcat

功能:将source中的字符串追加到destination中字符串的后面 。destination中的'\0'会被source中的第一个字符覆盖,并且在形成的新字符串末尾包含一个'\0'。

注意

•源字符串必须以 '\0' 结束。

•目标空间必须有足够的大,能容纳下源字符串的内容。

•目标空间必须可修改。 字符串自己给自己追加。

举例:

3.strcmp

功能:比较str1和str2两个字符串的大小,不是比较长度,而是比较对应位置字符的大小,即ASCII码值的大小。

返回值

规定:

•第一个字符串大于第二个字符串,则返回大于0的数字

•第一个字符串等于第二个字符串,则返回0

•第一个字符串小于第二个字符串,则返回小于0的数字

举例:

三、长度受限制的字符串函数

1.strncpy

功能:拷贝num个字符从源字符串到目标空间。 如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加'\0',直到num个。 

注意

•让拷贝几个就拷贝几个,不会像strcpy一样将'\0'拷贝过去。

举例: 

(1)

(2)

2.strncat 

功能:在destination字符串后追加num个source中的字符。

注意: 

•会把'\0'也追加过来

•如果追加的数目超过源字符串长度,有几个就追加几个,再加上一个'\0'。

举例:

(1)

(2)

3.strncmp

功能:比较num个str1和str2中字符的大小(ASCII码值),比较到出现另个字符不一样或者一个字符串结束或者num个字符全部比较完。

返回值:

规定:

•第一个字符串大于第二个字符串,则返回大于0的数字

•第一个字符串等于第二个字符串,则返回0

•第一个字符串小于第二个字符串,则返回小于0的数字

 举例:

四、字符串查找

1.strstr

功能:在str1中找str2,返回str1中str2第一次出现的位置。 

 举例:

2.strtok

功能:把str字符串以delimiters为标记分割开。 

•delimiters参数是个字符串,定义了用作分隔符的字符集合 第一个参数指定一个字符串,它包含了0个或者多个由delimiters字符串中一个或者多个分隔符分割的标记。

•strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注: strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容 并且可修改。)

•strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串 中的位置。

•strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。

举例:

 

五、错误信息报告 

1.strerror

功能:将错误码作为参数,返回错误信息。 

举例:

 2.perror

 功能:直接将错误信息打印出来。

举例:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值