首页 > 其他 > 详细

第9章:字符串、字符和字节

时间:2021-05-07 00:18:10      阅读:21      评论:0      收藏:0      [点我收藏+]

9.1 字符串基础

  c语言中并没有给出显示的字符串数据类型,字符串通常以字符数组的形式出现。字符串会以‘\0‘的NUL字节结尾,但是字符串的长度计算不会把NUL算进去。

  头文件string.h包含了使用字符串函数所需的原型和声明,包含这个头文件可以更好地为我们的程序执行错误检查。

9.2 字符串长度

  库函数中的strlen原型如下

size_t
strlen(char const *string){
    int length;
    for(length = 0 ; *string++ != \0 ;){
        length++;
    }
    return length;
}

size_t被定义在stddef.h中,他是一个无符号整数。在表达式中运用无符号整数会导致意想不到的错误,如下所示

技术分享图片第二个值永远为真 , 因为无符号整数大于等于0;

 

 技术分享图片

 

 9.3 不受限制的字符串函数

  像上面的strlen库函数只是通过寻找字符串参数结尾的NUL来判断它的长度,我们必须确保字符串不会溢出内存。

9.3.1 复制字符串

  用于复制字符串的库函数是char *strcpy(char *dst , char const *src) . 

这个函数把src字符串复制到dst中,因此dst必须是一个字符数组或者是一个指向动态分配内存的数组的指针,不能使用字符串常量。

复制字符串之后,dst字符数组初始值被覆盖丢失。

并且我们在复制字符串的时候,必须保证dst字符数组长度大于等于src;

9.3.2 连接字符串

  用于连接字符串的库函数是char *strcat(char *dst , char const *src);

9.3.3 函数的返回值

  strcpy和strcat都返回它们第一个参数的一份拷贝,也就是一个指向目标字符数组的指针。

9.3.4 字符串比较

  库函数int strcmp(char const *s1 , char const *s2) 用于比较两个字符串,如果第一个字符串小于第二个字符串返回一个负值。

9.4 长度受限的字符串函数

  技术分享图片

 

 像第一个函数strncpy唯一的不同就是多了一个参数len , 他将会复制len个src的字符到dst中。如果len大于strlen(src) 那么就会用NUL填充到len ,如果 小于 , 那么只会复制 len 个 字符到dst中,注意最后不会加NUL。

但是strncat总会在dst最后加一个NUL

9.5 字符串查找基础

9.5.1 查找一个字符

  在一个字符串中查找一个特定字符最容易的方法是用strchr 和 strrchr;

char *strchr(char const *str , int ch)
char *strrchr(char const *str , int ch) 

这两个函数的返回值都是一个指向找到位置的指针。区别在于第一个函数返回找到的第一个位置的指针,第二个函数返回找到最后一个位置的指针

9.5.2 查找任何几个字符

  strpbrk(string pointer break)用于查找任何一组字符第一次在字符串中出现的位置。

char *strpbrk(char const *str , char const *group)

下面是一个应用的实例

char *group = "abc"
char string[20] = "Hello there , honey.";
char *ans = strpbrk(string, "group");

 

第9章:字符串、字符和字节

原文:https://www.cnblogs.com/JasonJ/p/14736991.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!