字符串是一个字符数组。在本指南中,我们将学习如何声明字符串,如何在 C 编程中使用字符串以及如何使用预定义的字符串处理函数。
我们将看到如何比较两个字符串,连接字符串,将一个字符串复制到另一个字符串,以及执行各种字符串操作。我们可以使用string.h
头文件的预定义函数执行此类操作。要使用这些字符串函数,必须在 C 程序中包含string.h
文件。
字符串声明
方法 1:
方法 2:上面的字符串也可以定义为:
在上面的声明中,空字符(\0
)将自动插入字符串的末尾。
什么是空字符\0
?
'\0'
表示字符串的结尾。它也被称为字符串结尾或空字符。
C 编程中的字符串 I/O
使用printf()
和scanf()
函数在 C 中读取和编写字符串
输出:
注意:%s
格式说明符用于字符串输入/输出
使用gets()
和puts()
函数在 C 中读取和编写字符串
C – 字符串函数
C 字符串函数 – strlen
语法:
size_t
表示无符号短整数,它返回字符串的长度而不包括结束字符(终止字符\0
)。
strlen
的例子:
输出:
strlen
vs sizeof
strlen
返回存储在数组中的字符串的长度,但sizeof
返回分配给数组的总大小。因此,如果我再次考虑上述示例,则以下语句将返回以下值。
strlen(str1)
返回值 13。sizeof(str1)
将返回值 20,因为数组大小为 20(请参阅main
函数中的第一个语句)。
C 字符串函数 – strnlen
语法:
size_t
表示无符号短整数。如果字符串小于为maxlen
指定的值(最大长度),则返回字符串的长度,否则返回maxlen
值。
strnlen
的例子:
输出:
您是否注意到第二个printf
语句的输出,即使字符串长度为 13,它只返回 10,因为maxlen
为 10。
C 字符串函数 – strcmp
它比较两个字符串并返回一个整数值。如果两个字符串相同(相等),则此函数将返回 0,否则它可能会根据比较返回负值或正值。
如果string1<string2
或者string1
是string2
的子字符串,它会产生负值。如果string1>string2
它将返回正值。
如果string1 == string2
,那么当你将此函数用于比较字符串时,你会得到 0。
strcmp
示例:
输出:
C 字符串函数 – strncmp
size_t
用于无符号短整数。它比较字符串直到n
个字符,或者换句话说,它比较两个字符串的前n
个字符。
strncmp
示例:
输出:
C 字符串函数 – strcat
它连接两个字符串并返回连接的字符串。
strcat
示例:
输出:
C 字符串函数 – strncat
它将str2
的n
个字符连接到字符串str1
。终结符(\0
)将始终附加在连接字符串的末尾。
strncat
示例:
输出:
C 字符串函数 – strcpy
它将字符串str2
复制到字符串str1
中,包括结束字符(终结符\0
)。
strcpy
示例:
输出:
C 字符串函数 – strncpy
size_t
是无符号short
,n
是数字。
情况 1:如果str2
的长度>n
然后它只是将str2
的前n
个字符复制到str1
中。
情况 2:如果str2
的长度<n
。然后它将str2
的所有字符复制到str1
中,并附加几个终结符字符(\0
)以填充str1
的长度使其成为n
。
strncpy
的例子:
输出:
C 字符串函数 – strchr
它在字符串str
中搜索字符ch
(您可能想知道在上面的定义中我已经将ch
的数据类型赋予了int
,不要担心我没有犯任何错误它应该只是int
。事情是当我们将任何值给strchr
时,它会在内部转换为整数以便更好地搜索。
strchr
的例子:
输出:
C 字符串函数 – strrchr
它类似于strchr
函数,唯一的区别是它以相反的顺序搜索字符串,现在你已经理解为什么我们在strrchr
中有额外的r
,是的你猜对了它,它只是反向的。
现在让我们采用相同的上述示例:
输出:
为什么输出与strchr
不同? 这是因为它从字符串的末尾开始搜索并在函数中找到第一个'f'
而不是'of'
。
C 字符串函数 – strstr
它类似于strchr
,除了它搜索字符串srch_term
而不是单个字符。
strstr
示例:
输出:
您也可以使用此函数代替strchr
,因为您也可以使用单个字符代替search_term
字符串。