热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C语言中常用的字符与字符串处理函数及其应用解析

在C语言中,常用的字符和字符串处理函数对于程序开发至关重要。这些函数定义在标准库中,如`stddef.h`中的`size_t`表示无符号整数。本文详细解析了字符和字符串处理函数的应用,特别是查找功能的相关实现。通过具体示例,展示了如何高效地使用这些函数进行字符串操作和字符处理,为开发者提供了实用的参考。

C中常用的字符、字符串处理函数


(注:size_t定义在stddef.h中,代表无符号整数。)

关于查找:

(1)
size_t  strspn( char const *str, char const *group);  p182

返回str起始部分匹配group中任意字符的字符数(也可理解为str中第一个不在group中出现的字符的索引值)。

如下:int  len1 = strspn(“1234567890”, “af123af”);  //len1 = 3



(2)
size_t  strcspn( char const *str, char const *group);

返回str起始部分不匹配group中任意字符的字符数(str中第一个在group中出现的字符的索引值)。

 如下: int  n = strcspn( “Hello, world”, “Welcome you” );  //n = 1

(注: 若找不到,则返回str的尾部。)



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

返回str中第一个与group中任何一个字符相匹配的字符的地址(指针)。

(注:若没找到,返回NULL。)

(注: 它与strcspn的区别是,前者返回指针,后者返回下标值。)



(4) char  *strctr( char const *str, int ch);

(5)
char  *strrchr( char const *str, int ch);

前者返回在str中第一次出现的字符ch(int型)的位置,后者返回在str中最后一次出现的ch的位置。

     

(6)
char  *strstr ( char const *s1, char const *s2);

在s1中查找整个子字符串s2第一次出现的起始位置。

(注: 若找不到,返回NULL ,若s2是空字符串,返回s1。)



关于长度:

(7)
size_t  strlen( char const *string );

返回string包含的字符的个数。

           (注:不包括\0的长度。写 int a = strlen(“ABC”);或int a = strlen(“ABC\0”);

            结果都为3。)  



关于复制与连接:

(8)
char   *strcpy( char *dst, char const *str);

将src字符串复制到dst中(连带NUL字节)。返回指向dst数组的指针。原来dst中的内容被覆盖。

(注: 若src和dst在内存中是重叠的,则结果是未定义的。)

(注: 不要让str的长度大于dst的长度。)



(9)
char  *strcat ( char *dst, char const *src );

将src添加到dst的末尾,返回指向dst数组的指针。

(注: 若重叠,未定义。)

(注: 要保证dst剩余空间足够。)



关于比较:

(10)
int  strcmp ( char const *s1, char const *s2 );

字典比较。比较2个字符串中最先不匹配的字符的大小(依据字符集)。

若s1 s2, 返回大于0的值;

若s1 = s2,返回0。



长度受限的字符串函数:

(11)
char  *strncpy( char *dst, char const *str, size_t len );

(12)
char  *strncat( char *dst, char const *str, size_t len );

(13)
int  strncmp( char const *s1, char const *s2, size_t len );

功能类似于前3者,但有一些区别和注意点。
推荐阅读
  • WinMain 函数详解及示例
    本文详细介绍了 WinMain 函数的参数及其用途,并提供了一个具体的示例代码来解析 WinMain 函数的实现。 ... [详细]
  • String字符串与字符数组#includeStringintmain(){char*strhello;字符串与字符数组的关系:字符串是 ... [详细]
  • 2.2 组件间父子通信机制详解
    2.2 组件间父子通信机制详解 ... [详细]
  • 在C语言中,指针的高级应用及其实例分析具有重要意义。通过使用 `&` 符号可以获取变量的内存地址,而 `*` 符号则用于定义指针变量。例如,`int *p;` 定义了一个指向整型的指针变量 `p`。其中,`p` 代表指针变量本身,而 `*p` 则表示指针所指向的内存地址中的内容。此外,指针在不同函数中可以具有相同的变量名,但其作用域和生命周期会有所不同。指针的灵活运用能够有效提升程序的效率和可维护性。 ... [详细]
  • C语言中全部可用的数学函数有哪些?2.longlabs(longn);求长整型数的绝对值。3.doublefabs(doublex);求实数的绝对值。4.doublefloor(d ... [详细]
  • 本文介绍如何使用线段树解决洛谷 P1531 我讨厌它问题,重点在于单点更新和区间查询最大值。 ... [详细]
  • 本文探讨了C语言和C++中大小写的处理方式,并详细介绍了如何在C++中实现不区分大小写的字符串比较。通过自定义`char_traits`类,可以灵活地处理字符的比较、复制和转换。 ... [详细]
  • 本文详细介绍了C语言中常用的字符串处理函数,包括字符串比较、拷贝、拼接和求长度等,这些函数均在string.h头文件中定义。 ... [详细]
  • 字节流(InputStream和OutputStream),字节流读写文件,字节流的缓冲区,字节缓冲流
    字节流抽象类InputStream和OutputStream是字节流的顶级父类所有的字节输入流都继承自InputStream,所有的输出流都继承子OutputStreamInput ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 本文介绍了一种在ANSI C中动态分配二维数组的方法。通过创建指针数组并为每个指针分配连续空间,可以灵活地管理内存。文章还讨论了一些常见的错误和注意事项。 ... [详细]
  • 深入解析:Synchronized 关键字在 Java 中对 int 和 Integer 对象的作用与影响
    深入探讨了 `Synchronized` 关键字在 Java 中对 `int` 和 `Integer` 对象的影响。尽管初看此题似乎简单,但其实质在于理解对象的概念。根据《Java编程思想》第二章的观点,一切皆为对象。本文详细分析了 `Synchronized` 关键字在不同数据类型上的作用机制,特别是对基本数据类型 `int` 和包装类 `Integer` 的区别处理,帮助读者深入理解 Java 中的同步机制及其在多线程环境中的应用。 ... [详细]
  • 在C#中,一旦对象被实例化后,直接重新调用构造函数是不可行的。与C++不同,C#不支持在对象实例化后强制调用构造函数。为了实现类似的功能,可以通过定义一个重置方法或使用工厂模式来重新初始化对象的状态。例如,可以创建一个 `Reset` 方法,在该方法中重新设置对象的属性和状态,从而达到类似于重新调用构造函数的效果。这样不仅保持了代码的清晰性和可维护性,还避免了潜在的副作用。 ... [详细]
author-avatar
于华521_811
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有