本文主要介绍C语言中字符串数组的详细说明。本文通过一个简单的案例来说明对这项技术的理解和使用。以下是详细内容。有需要的朋友可以参考一下。
C语言字符串数组
字符串是一个连续的字符序列,以空字符' \0 '作为终止符。字符串的长度是指所有字符的数量,不包括终止符。C语言中没有字符串类型,自然也就没有以字符串为操作数的运算符。
字符串存储在元素类型为char或宽字符类型(宽字符类型指wchar_t、char16_t或char32_t)的数组中。由宽字符组成的字符串也称为宽字符串。
C标准库提供了大量的函数,可以对字符串进行基本的操作,比如字符串比较、复制、串联等。除了这些传统的字符串函数,C11还增加了这些函数的“安全”版本,可以确保字符串操作不会超出数组的界限。
您可以使用字符串来初始化任何字符类型数组。例如,以下两个数组的定义是等效的:
char str1[30]='走吧';//字符串长度:8;数组长度:30
char str1[30]={ 'L ',' e ',' t ',' \ '',' s ',' ',' g ',' \ 0 ' };
存储字符串的数组必须比字符串长度长一个元素,以容纳下一个字符串终止符(空字符' \0 ')。因此,str1数组可以存储的最大字符串长度是29。如果定义长度为8而不是30的数组,将会出现错误,因为它不能包含字符串终止符。
如果在定义字符数组时没有显式指定它的长度,而是使用字符串文字来初始化它,则数组的长度将比字符串的长度多1。如下所示:
char str2[]='到伦敦!';//字符串长度:11(注意开头的空格);
//数组长度:12
以下语句使用标准函数strcat()将字符串str2追加到字符串str 1(str 1数组的长度必须足够大,以容纳所有连接的字符)。
#包含字符串. h
char str1[30]='走吧';
char str2[ ]='到伦敦!';
/* .*/
strcat( str1,str 2);
看跌期权(str 1);
调用puts()后,输出新的str1数组内容:
我们去伦敦吧!
str1和str2的名字实际上是两个指针,分别指向各自数组的第一个字符。这种指针被称为指向字符串的指针,或简称为字符串指针。
字符串处理函数(如scrcat()和puts())需要接收字符串的起始地址,并将其作为参数。这种函数通常一个字符一个字符地处理字符串,直到遇到结束符' \0 '。
示例1是函数strcat()的另一个——种可能的实现。它使用从函数参数传入的指针来遍历整个字符串。[例1]函数strcat()
//函数strcat()复制第二个字符串并将其追加到第一个字符串的末尾。
//参数:指向两个字符串的指针
//返回值:指向第一个字符串的指针,此时第二个字符串已经连接到它的尾部。
char *strcat( char * restrict s1,const char * restrict s2)
{
char * rtnPtr=s1
while ( *s1!='\0') //找到字符串s1的结尾
S1;
while (( *s1=*s2)!='\0') //用s1的终止符替换s2的第一个字符
;
返回rtnPtr
}
从s1地址开始的char数组,其长度至少为两个字符串长度之和加1,以容纳字符串终止符。在调用strcat()之前,可以使用标准函数strlen()进行测试,确保长度没有问题。函数strlen()返回其字符串参数的长度,如下所示:
if(sizeof(str 1)=(strlen(str 1)strlen(str 2)1))
strcat( str1,str 2);
宽字符串文字以L、U或U为前缀,它们是宽字符串的符号。因此,wchar_t数组的初始化过程如下:
#include stddef.h //定义wchart_t类型
/* .*/
wchar_t晚餐[]=L '杂碎';//字符串长度:10;
//数组长度:11;
//数组空间大小:11 * sizeof(wchar_t)
本文关于C语言字符串数组的详细讲解到此为止。关于C语言字符串数组的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。