C库字符串函数介绍 1、strstr() C 库函数 char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘0’。 下面是 strstr() 函数的声明。 参数 haystack — 要被检索的 C 字符串。needle — 在 haystack 字符串内要搜索的小字符串。 返回值 该函数返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返回 null。 返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。 需要注意的是haystack的长度要大于needle 示例1:
输出:str str2 str1 示例2: char str[]=”1234xyz”; char *str1=strstr(str,”34″); cout 输出: 34xyz 2、char *和char[]的区别是什么 在C和C++中,和都用于表示字符数组,但它们之间存在一些重要的区别: 存储:是一个指向字符的指针,它只存储了一个地址,这个地址通常指向一个字符串常量或者动态分配的内存。另一方面,是一个真正的字符数组,它存储了一串字符。生命周期:的内存是在栈上分配的,其生命周期与包含它的函数或代码块一致。当函数或代码块执行完毕,该内存将被自动释放。另一方面,可以指向动态分配的内存,其生命周期取决于程序员如何管理它。如果程序员忘记释放内存,可能会导致内存泄漏。字符串常量:当指向一个字符串常量时,例如,实际上只是一个指向字符串常量的指针。字符串常量是不可修改的,试图修改它会导致未定义行为。这种情况下,使用更安全。另一方面,可以创建一个可以修改的字符串。 下面是一些例子来说明这些区别: 注意:在C++中,推荐使用来处理字符串,因为它提供了更安全、更高效的方式来处理字符串。 C字符串 在 C 语言中,字符串实际上是使用空字符 0 结尾的一维字符数组。因此,0 是用于标记字符串的结束。 空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,0 是转义字符,意思是告诉编译器,这不是字符 0,而是空字符。 下面的声明和初始化创建了一个 RUNOOB 字符串。由于在数组的末尾存储了空字符 0,所以字符数组的大小比单词 RUNOOB 的字符数多一个。 char site[7] = {‘R’, ‘U’, ‘N’, ‘O’, ‘O’, ‘B’, ‘0’}; 依据数组初始化规则,您可以把上面的语句写成以下语句: char site[] = “RUNOOB”; 其实,您不需要把 null 字符放在字符串常量的末尾。C 编译器会在初始化数组时,自动把 0 放在字符串的末尾。让我们尝试输出上面的字符串: 在使用不定长数组初始化字符串时默认结尾为 0 char greeting[] = “Hello”; printf(“Greeting message: %s, greeting[] Length: %d ”, greeting, sizeof(greeting)); 输出结果: Greeting message: Hello, greeting[] Length: 6 字符数组如果不预留’0’编译器会报错,如下图所示
再如
C 中有大量操作字符串的函数: 序号函数 & 目的1strcpy(s1, s2); 复制字符串 s2 到字符串 s1。2strcat(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。3strlen(s1); 返回字符串 s1 的长度。4strcmp(s1, s2); 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。5strchr(s1, ch); 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。6strstr(s1, s2); 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。 其中函数的英文全称为 strcmp: string compare strcat: string catenate 字符串连接 strcpy: string copy strlen: string length strlwr: string lowercase strupr: string upercase 下面的实例使用了上述的一些函数: 转载自:C 字符串 | 菜鸟教程 (runoob.com)
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/75823.html