C Primer Plus学习 三十三 string.h 其他字符串函数

ANSI C库有20多个处理字符串的函数,下面的列表总结了其中最常用的一些:
• char *strcpy (char * si, const char * s2);
该函数把s2指向的字符串(包括空字符)复制.到si指向的位置,返回值是sl。
• char *strncpy (char * si, const char * s2,size一t n):

       该函数把s2指向的字符串复制到si指向的位置,复制的字符数不超过n个。返回值是si。空字符后 的字符不被复制。如果源字符串的字符数少于n个,在目标字符串中就以空字符填充。如果源字符串的字 符数大于或等于n个,空字符就不被复制。返回值是S1。

• char *strcat (char * si, const char * s2):

       s2指向的字符串被复制到si指向字符串的结尾。复制过来的s2所指字符串的第一个字符覆盖了 si所 指字符串结尾的空字符。返回值是si。

• char *strncat (char * si, const char * s2, size_t n);

       s2字符串中只有前n个字符被追加到si字符串,复制过来的s2字符串的第一个字符覆盖了 si字符串 结尾的空字符。S2字符串中的空字符及其后的任何字符都不会被复制,并1•追加一个空字符到所得结果后 面。返回值是si。

• int strcmp (const char * si,const char * s2 );

       如果si字符串在机器编码顺序中落后f's2字符串,函数的返回值是一个m数;如果两个字符串相同, 返回值是〇;如果第一个字符串在机器编码顺序中先于第二个字符串,返回值是一个负数。

• int strncmp (const char * si, const char * s2,size_t n);

        该函数的作用和strcmp ()--样,只是比较n个字符后或者遇见第一个空字符时会停止比较,由二者 中最先被满足的那个条件终止比较过程。

• char *strchr (const char * s, int c):

      该函数返回一个指向字符串s中存放字符c的第一个位置的指针(标志结束的空字符是字符串的一部 分,因此也可以搜索到它)。如果没找到该字符,函数就返回空指针。

• char *strpbrk (const char * si. const: char * s2):

        该函数返回--个指针\,指向字符串si中存放S2字符串中的任何字符的第一个位置。如果没找到任何 字符,函数就返回空指针\

• char *strrchr (const char * s, int c);

        该函数返回一个指针,指向字符串S中字符c最后-次出现的地方(标志结束的空字符是字符串的一 部分,因此也可以搜索到它)。如果没找到该字符,函数就返回空指针。

• char *strstr (const char * si, const char * s2):

       该函数返回一个指针,指向si字符串中第一次出现s2字符串的地方。如果在si中没找到s2字符串, 函数就返回空指针。

• size_t strlen (const char * s):

       该函数返回s字符串中的字符个数,其中不包括标志结束的空字符。
       注意,这些原型使用关键字const来指出哪个字符串是函数不能改动的。例如,考虑下面这个原型:

char *strcpy (char * si,const char * s2);

        这意味着82指向一个不可改变的字符串,至少strcpy()函数不会改变它,但是si指向的字符串却可 以改变。这是因为,si是需要改变的目标字符串,而S2是不应当有改变的源字符串。
        第5章“运算符、表达式和语句”中已经讨论过,Size_t类型是Size0f运算符返回的任何类型。c规定 sizeof运算符返回-个整数类型,但是没有指定是哪种整数类型。因此Size_t在一个系统上可以是unsigned int类型;在另--个系统上,又可以是unsigned long类型。string.h文件为您的特定系统定义了 sizej,或者 您可以参考其他有该定义的头文件。
前面已经提到过,参考资料5中列出了 string.li系列中所有的函数。除了 ANSI标准要求的那些,很多 C实现还提供了其他一些函数。应该査看您的C实现的文档以了解可以使用哪些函数。
        让我们看一下这些函数其中一个的简单使用。前面您己学习了 f评is ()函数。在读取一行输入时,这个函数把换行符存储到目标字符串中。可以使用stehr ()函数来用-十空字符代替这个换行符。首先’使用sttchr () 找到换行符(如果有的话)。如果找到了,函数就返回这个换行符的地址,于是就可以在该地址放一个空字符:

char line[80J; char * find;

fgets (line, 80,stdin):

find = strchr (line,1 \n1): // 查找换行符

if (find) //如果该地址不为NULL,

*find = -\0- //就把一个空字符放在这里

      如果strehr ()没有找到换行符,说明fgets ()在行未结束时就达到了大小限制。您可以给if加个else 来处理这种情况。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值