当前位置: 首页 > news >正文

初出茅庐的小李博客之常见字符串函数使用

C语言字符数组与字符串数组

在C语言中,字符数组字符串数组实际上是同一种类型。字符串是由字符组成的字符数组,通常以空字符 ‘\0’ 结尾。C语言中的字符串是一种常见的数据类型。我们可以通过两种方式定义字符数组跟字符串数组

char charArray[10];               // 定义一个包含10个字符的字符数组
char strArray[10] = "Hello";      // 定义并初始化一个字符串数组

常用函数之strlen()函数

strlen 是 C 语言中的一个字符串函数,用于计算字符串的长度,即字符串中字符的个数(注意它是不包括结尾的空字符 ‘\0’)。

函数原型如下:

size_t strlen(const char *str);

参数 str 是一个指向以空字符 ‘\0’ 结尾的字符串的指针。函数返回一个 size_t 类型的值,表示字符串的长度。

以下是一个使用 strlen 函数的示例代码:

#include <stdio.h>
#include <string.h>int main(void) 
{char str[] = "Hello, World!";size_t length = strlen(str);printf("Length of the string: %zu\n", length);return 0;
}

在上述示例中,我们定义了一个字符串 str,并使用 strlen 函数计算字符串的长度,将结果保存在变量 length 中。最后,使用 printf 函数打印字符串的长度。

输出结果为:

Length of the string: 13

注意,strlen 函数返回的长度不包括结尾的空字符 ‘\0’。所以对于上述示例中的字符串 “Hello, World!”,虽然实际占用的字符数为 13,但 strlen 函数返回的结果是 13,而不是 14。这是因为 C 语言中的字符串以空字符 ‘\0’ 结尾,作为字符串的结束标志。

5个字母+1个逗号 + 1个空格 + 5个字母+1个感叹号 = 13个字节

常用函数之strcpy()函数

strcpy 是 C 语言中的一个字符串函数,用于将一个字符串复制到另一个字符串中。

函数原型如下:

char *strcpy(char *dest, const char *src);

参数 dest 是目标字符串的指针,src 是源字符串的指针。函数将源字符串的内容复制到目标字符串中,并返回指向目标字符串的指针。//后面的字符串被复制到前面的那个字符串 并返回指向的目标字符串指针

以下是一个使用 strcpy 函数的示例代码:

#include <stdio.h>
#include <string.h>int main(void){char src[] = "Hello";char dest[10];strcpy(dest, src);printf("Copied string: %s\n", dest);return 0;
}

在上述示例中,我们定义了一个源字符串 src,内容为 “Hello”,以及一个目标字符串 dest,大小为 10。使用 strcpy 函数将源字符串的内容复制到目标字符串中。最后,使用 printf 函数打印目标字符串的内容。

输出结果为:

Copied string: Hello

注意,在使用 strcpy 函数时,需要确保目标字符串的缓冲区足够大以容纳源字符串的内容。否则,可能会导致缓冲区溢出的错误。此外,确保源字符串以空字符 ‘\0’ 结尾,以便 strcpy 函数正确复制整个字符串。

常用函数之strcmp()函数

strcmp 是 C 语言中的一个字符串函数,用于比较两个字符串是否相等。

函数原型如下:

int strcmp(const char *str1, const char *str2);

参数 str1str2 是两个要比较的字符串的指针。函数返回一个整数值,表示比较结果的大小关系:

  • 如果 str1str2 相等,则返回 0。
  • 如果 str1 按字典顺序小于 str2,则返回负数。
  • 如果 str1 按字典顺序大于 str2,则返回正数。

什么是按照字典排序呢?

按字典顺序是一种基于字母字符的比较方式,类似于字典中单词的排列顺序。在 C 语言中,字符串的比较操作是按照字典顺序进行的。

字典顺序比较的规则如下:

  1. 比较字符串中对应位置的第一个字符。
  2. 如果两个字符不相等,那么根据它们的 ASCII 值来确定它们的大小关系。较小的字符被认为是在字典中较早的位置较大的字符被认为是在字典中较后的位置
  3. 如果两个字符相等,则继续比较下一个字符,直到找到不相等的字符或遇到字符串的结尾(即遇到空字符 ‘\0’)。
  4. 如果其中一个字符串到达结尾而另一个字符串还有剩余字符,则被认为到达结尾的字符串较小。

以下是一些示例,帮助理解按字典顺序比较字符串的结果:

  • “apple” 按字典顺序小于 “banana”,因为 ‘a’ 比 ‘b’ 小。ASCII码值小
  • “cat” 按字典顺序大于 “dog”,因为 ‘c’ 比 ‘d’ 大。
  • “hello” 按字典顺序等于 “hello”,因为每个对应位置的字符都相等。
  • “open” 按字典顺序大于 “office”,因为在第一个字符 ‘o’ 相等的情况下,第二个字符 ‘p’ 比 ‘f’ 大。

需要注意的是,字母的大小比较是基于其对应的 ASCII 值进行的。在 ASCII 编码中,小写字母的 ASCII 值比大写字母的 ASCII 值大*。因此,在按字典顺序比较字符串时,大写字母会被认为是在相应小写字母之前。*

理解按字典顺序比较字符串的概念对于正确使用字符串比较函数(如 strcmp)以及处理字符串排序等操作非常重要。

以下是一个使用 strcmp 函数的示例代码:

#include <stdio.h>
#include <string.h>int main(void) 
{char str1[] = "Hello";char str2[] = "World";int result = strcmp(str1, str2);if (result == 0) {printf("Strings are equal.\n");} else if (result < 0) {printf("str1 is less than str2.\n");} else {printf("str1 is greater than str2.\n");}return 0;
}

在上述示例中,我们定义了两个字符串 str1str2,分别赋值为 “Hello” 和 “World”。使用 strcmp 函数比较这两个字符串,并将结果保存在变量 result 中。然后根据比较结果打印相应的消息。

输出结果为:

str1 is less than str2.

在此示例中,由于 “Hello” 按字典顺序小于 “World”,所以 strcmp 函数返回一个负数值,表明 str1 小于 str2。根据返回的结果,我们输出了相应的消息。

需要注意的是,strcmp 函数是区分大小写的。如果要执行不区分大小写的字符串比较,可以使用 strcasecmp 函数(在一些编译器中可能称为 _stricmp)。

这是在dev的string.h一段代码 它支持strcasecmp 以及_stricmp
#ifndef __CRT__NO_INLINE__CRT_INLINE int __cdecl strncasecmp (const char *__sz1, const char *__sz2, size_t __sizeMaxCompare) { return _strnicmp (__sz1, __sz2, __sizeMaxCompare); }__CRT_INLINE int __cdecl strcasecmp (const char *__sz1, const char *__sz2) { return _stricmp (__sz1, __sz2); }
#else
#define strncasecmp _strnicmp
#define strcasecmp _stricmp
#endif /* !__CRT__NO_INLINE */

常用函数之strcat()函数

strcat 是 C 语言中的一个字符串函数,用于将一个字符串连接到另一个字符串的末尾。

函数原型如下:

char *strcat(char *dest, const char *src);

参数 dest 是目标字符串的指针,src 是源字符串的指针。函数将源字符串的内容连接到目标字符串的末尾,并返回指向目标字符串的指针。

以下是一个使用 strcat 函数的示例代码:

#include <stdio.h>
#include <string.h>int main(void){char str1[20] = "Hello";char str2[] = ", World!";strcat(str1, str2);printf("Concatenated string: %s\n", str1);return 0;
}

在上述示例中,我们定义了一个目标字符串 str1,大小为 20,并初始化为 “Hello”。然后,定义了一个源字符串 str2,内容为 “, World!”。使用 strcat 函数将 str2 连接到 str1 的末尾,修改了 str1 的内容。最后,使用 printf 函数打印连接后的字符串。

输出结果为:

Concatenated string: Hello, World!

strcat 函数会将源字符串的内容追加到目标字符串的末尾,并确保目标字符串以空字符 ‘\0’ 结尾。在示例中,str1 原先以空字符结尾,strcat 函数会将 str2 的内容从 str1 结尾处开始拷贝,覆盖掉 str1 的空字符,并在连接的末尾添加一个新的空字符。

需要注意的是,在使用 strcat 函数时,确保目标字符串的缓冲区足够大,以容纳源字符串的内容和额外的空字符。否则,可能会导致缓冲区溢出的错误。

类似这样的函数还有哪些呢?

除了这个几常见的字符串函数外,C 语言还有许多其他常用的字符串函数。以下是一些高频使用的字符串函数:

  1. strcat:用于将一个字符串连接到另一个字符串的末尾。
  2. strncat:类似于 strcat,但是可以指定要连接的字符数。
  3. strcmp:已经提到过,用于比较两个字符串是否相等。
  4. strncmp:类似于 strcmp,但是可以指定要比较的字符数。
  5. strcpy:已经提到过,用于将一个字符串复制到另一个字符串中。
  6. strncpy:类似于 strcpy,但是可以指定要复制的字符数。
  7. strchr:在字符串中搜索指定字符的第一个出现位置,并返回指向该位置的指针。
  8. strrchr:在字符串中搜索指定字符的最后一个出现位置,并返回指向该位置的指针。
  9. strstr:在字符串中搜索指定子字符串的第一个出现位置,并返回指向该位置的指针。
  10. strtok:将字符串分割成多个子字符串,使用指定的分隔符进行分割。
  11. sprintf:将格式化的数据写入字符串。
  12. sscanf:从字符串中读取格式化的数据。
  13. strlen:已经提到过,用于计算字符串的长度。
  14. memset:将指定的值复制到字符串的每个字符。
  15. memcpy:将一个字符串的内容复制到另一个字符串。

这些函数是 C 语言中处理字符串时经常使用的函数,它们提供了广泛的功能,可用于字符串操作、搜索、比较、复制等。了解和熟练使用这些函数对于处理字符串数据非常重要。建议在需要使用特定功能时,查阅相关函数的文档并参考示例代码以确保正确使用。

http://www.lryc.cn/news/92883.html

相关文章:

  • 运筹学工程化流程和常见的运筹学算法分类以及常见软件
  • JAVA面向对象(三)
  • 前端面试题---跨域处理和异常、错误处理
  • 网络安全之反序列化漏洞分析
  • 19 贝叶斯线性回归
  • 第七十天学习记录:高等数学:微分(宋浩板书)
  • Jmeter
  • Flutter 学习 之 时间转换工具类
  • docker consul
  • 全志V3S嵌入式驱动开发(开发环境再升级)
  • ChatGPT:人工智能助手的新时代
  • 【面试】二、Java补充知识
  • LISTENER、TNSNAMES和SQLNET配置文件
  • 【Leetcode -225.用队列实现栈 -232.用栈实现队列】
  • 悟道3.0全面开源!LeCun VS Max 智源大会最新演讲
  • 2023蓝桥杯大学A组C++决赛游记+个人题解
  • wkhtmltopdf踩坑记录
  • 贪心算法part2 | ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II
  • [C++]异常笔记
  • 浅谈一级机电管道设计中的压力与介质温度
  • Docker网络模型(八)使用 macvlan 网络
  • 控制视图内容的位置
  • 【分布式系统与一致性协议】
  • 音视频领域的未来发展方向展望
  • 时间同步/集群时间同步/在线/离线
  • 基于BP神经网络对MNIST数据集检测识别(numpy版本)
  • HTML5-创建HTML文档
  • Vue中Axios的封装和API接口的管理
  • MLIR面试题
  • ***杨辉三角_yyds_LeetCode_python***