【C语言】字符函数和字符串函数

  1.  字符函数
  2.  字符分类函数
  3.  strlen 的使用和模拟实现
  4.  strcpy 的使用和模拟实现
  5.  strcat 的使用和模拟实现
  6.  strcmp 的使用和模拟实现
  7.  strncpy 函数的使用
  8.  strncat 函数的使用
  9.  strncmp 函数的使用
  10.  strstr 的使用和模拟实现
  11.  strtok 函数的使用
  12.  strerror 函数的使用

    正文开始——

C语言标准库中提供了一系列库函数方便我们操作字符字符串

1.  字符分类函数

 作用 字符分类函数是专门用来做字符分类的,也就是一个字符属于什么类型的字符。

 头文件 这些函数的使用需要包含头文件 <ctype.h>

             函数如果它的参数符合下列条件返回真
          islower小写字母a~z
          isupper            大写字母A~Z
          isdigit十进制数字  ‘0’~‘9’
          isxdigit十六进制数字,包括所有十进制数字字符,小写字母 a~f ,大写字母A~F
          iscntrl任何控制字符
          isspace空白字符:空格 ‘ ’,换页 ‘\f’,换行 ‘\n’,回车 ‘\r’,制表符 ‘\t’,或者垂直制表符 ‘\v’
          isalpha字母a~z
          isalnum字母或数字,a~z,A~Z,0~9
          ispunct标点符号,任何不属于数字或字母的图形字符(可打印)
          isgraph        任何图形字符
          isprint任何可打印字符,包括图形字符和空白字符

例如:islower

1    int islower ( int c );  //c处传递的是字符或者字符的ASCII值 

 islower 能够判断参数部分输入的是否是小写字母 。通过其返回值来判断是否是小写字母,如果是小写字母就返回非0的整数,如果不是,就返回0。

练习:写个代码,将字符串中的小写字母转为大写字母,其他字符不变。

2.  字符转换函数 

C语言提供了两个字符转换函数:


1   int tolower ( int c );  //将大写转化为小写
2   int toupper ( int c );  //将小写转化为大写

有了这个函数,我们可以用函数实现上面的练习

3.  strlen 的使用和模拟实现 

1.  使用 

  • 字符串必须以 \0 作为结束标志,strlen 函数返回的是在字符串中 \0 之前的字符的个数(不包含 \0)。
  • 参数指向的字符串必须要以 \0 结束。
  • 注意函数的返回值是 size_t ,是无符号的(易错)。
  • strlen 的使用需要包含头文件。
  • 掌握 strlen 的三种模拟实现。

2.  三种模拟实现 【转到我的博客】

http://t.csdnimg.cn/7FOVnicon-default.png?t=N7T8http://t.csdnimg.cn/7FOVn

4.  strcpy 的使用和模拟实现 

 1.  使用 


1   char* strcpy(char* destination, const char* source);

 作用 将源字符串的内容拷贝到目标空间。

 头文件 :<string.h> 

  • 源字符串必须以 '\0' 结束。
  • 会将源字符串中的 '\0' 拷贝到目标空间。
  • 目标空间必须足够大,以确保能存放源字符串。
  • 目标空间必须可修改。
  • 此函数仅仅用于字符串的拷贝,其他类型不可以。
  • 学会模拟实现。

 2.  模拟实现  

5.  strcat 的使用和模拟实现 

 1.  使用 

作用:实现字符串的追加。

头文件:<string.h>

  • 源字符串必须以 '\0' 结束。
  • 目标字符串中也得有 '\0',否则无法知道从哪里开始追加。
  • 目标空间必须足够大,能容纳下源字符串的内容。
  • 目标空间必须可修改。
  • 字符串如何实现自己给自己追加?

 2.  模拟实现  

思路:首先找到目标空间的末尾 \0,再将源字符串拷贝过来。

注意:在模拟函数中,返回的是目标空间的起始地址。 在打印的时候可以使用函数返回的地址进行打印目标空间的字符串。

6.  strcmp的使用和模拟实现

 1.  使用 

作用:比较的是两个字符串中对应位置上的字符的大小,而不是字符串的长度。

头文件:<string.h>

标准规定:第一个字符串大于第二个字符串,则返回大于0的数字,

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

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

                  判断两个字符串大小,是比较两个字符串中对应位置上字符ASCII值的大小。

 2.  模拟实现 

7.  strncpy 函数的实现 


1   char*  strncpy ( char* destation, const char* source, size_t num );

作用:拷贝num个字符从源代码到目标空间。 

注意:1. 如果源代码字符串的长度小于num,则拷贝完源代码字符串之后,在目标的后边追加0,直到num个。

           2. 在拷贝完后目标空间最后没有 \0。

8.  strncat 函数的使用


1   char*  strncat( char* destation, const char* source, size_t num );

作用:将 source 指向的字符串的前 num 个字符追加到 destation 指向的字符串末尾,再追加一个\0 字符。 

注意:如果 source 指向的字符串的长度小于 num 的时候,只会将字符串中到 \0 的内容追加到destation指向的字符串末尾。

9.  strncmp 函数的使用 


1   int strncmp ( const char* str1, const char* str2, size_t num );

作用: 比较 str1 和 str2 的前 num 个字符,如果相等就继续往后比较,做多比较 num 个字母,如果提前发现不一样,就提前结束,大的字符所在的字符串大于另外一个。如果 num 个字符都相等,就是相等返回 0。

   以上总结:

           1.               strcpy                                                          strncpy

                             strcat          ——长度没有限制                    strncat       ——长度受限制

                             strcmp                                                         strncmp

           

           2.  关于字符串的函数的头文件都是 <string.h>            

10.  strstr 的使用和模拟实现

 1.使用  

作用:在 str1 中找 str2 这个字符串第一次出现的位置,如果找到了就返回这个函数第一次出现的起始位置,如果找不到,就返回 NULL。

注意:字符串的比较匹配不包含 \0 字符,以 \0 作为结束标志。

 2.  模拟实现  

11.  strtok 函数的使用 


1   char* strtok( char* str, const char* sep );

  • sep 参数指向一个字符串,定义了用作分隔符的字符集合。 
  • 第一个参数指定一个字符串,它包含了0个或者多个由 sep 字符串中一个或者多个分隔符分割的标记。
  • strtok 函数找到 str 中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注:strtok 函数会改变被操作的字符串,所以被 strtok 函数切分的字符串一般都是临时拷贝的内容并且可修改)。
  • strtok 函数的第一个参数不为 NULL,函数将找到 str 中的第一个标记,strtok 函数将保存它在字符串中的位置。
  • strtok 函数的第一个参数为 NULL,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
  • 如果字符串中不存在更多的标记,则返回 NULL 指针。

上代码: 

12.  strerror 函数的使用 


1   char* strerror ( int errnum );

作用:strerror 函数可以把参数部分错误码对应的错误信息的字符串地址返回来。 

解释:在不同的系统和C语言标准库的视线中都规定了一些错误码,一般是放在 errno.h 这个头文件中说明,C语言程序启动的时候就会使用一个全局变量 errno 来记录程序当前的错误码,程序启动时错误码为0,表示没有错误,当我们在使用标准库中的函数的时候发生了某种错误,就会将对应的错误码存放在errno 中,但是一个错误码的数字是整数是很难理解是什么意思的,所以每个错误码都有其对应的错误信息的。strerror 函数就可以将错误码对应的错误信息字符串的地址返回来。(将错误信息显示出来)

了解 perror函数:perror = strerror + printf。


完——

relaxing time!

願い〜あの頃のキミへ〜_當山みれい_高音质在线试听_願い〜あの頃のキミへ〜歌词|歌曲下载_酷狗音乐酷狗音乐为您提供由當山みれい演唱的高清音质无损願い〜あの頃のキミへ〜mp3在线听,听願い〜あの頃のキミへ〜,只来酷狗音乐!icon-default.png?t=N7T8https://t3.kugou.com/song.html?id=1o6aHa5COV2

下次见,拜拜~~~ 

  • 24
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云边有个稻草人

您的鼓励是我最大的动力,感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值