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

C语言之字符数组与字符串「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战」。 引言 前面介绍过字符串常量,以双引号括起来的一个字符序列,如“Beijing”的形式,但并没有提到过字符串变量,因为C

「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战」。

引言

前面介绍的一维数组与二维数组都是以数值型为例,其实数组中也可以存储字符型数组,称为字符数组。字符数组中每一个元素存放一个字符。 前面介绍过字符串常量,以双引号括起来的一个字符序列,如“Beijing”的形式,但并没有提到过字符串变量,因为C语言中并没有字符串变量的概念。对于字符串,C语言以字符数组的形式存储。

字符数组的定义与初始化

1.字符数组的定义 字符数组的定义与整形数组或浮点型数组定义相似,定义形式为:

char 数组名[元素个数];

例如:

char ch[10];

定义了一个字符数组ch,其中包含10个字符元素。

ch[0]='b';ch[1]='e';ch[2]='i';ch[3]='j';ch[4]='i';ch[5]='n';ch[6]='g';

则数组在内存中的存储形式如图所示: 在这里插入图片描述 2.字符数组的初始化 字符数组的初始化形式和一维数组类似,可以通过为每个数组元素指定初值字符来实现。例如:

char c[5]={'h','e','l','l','o'};

也可以对字符数组中部分元素赋初值。例如:

char c[5]={'h','e','l'};

如果对字符数组初始化后,即便是部分赋值,没有赋值的元素中的内容是以‘\0’的形式存在。(‘\0’代表ASCLL码为0的字符,表示一个“空操作”,不可显示,也不起任何控制作用,只起一个标志作用。) 在这里插入图片描述 同一维数组初始化一样,如果提供的初值个数与数组的长度相同,可在定义时省略数组长度,系统将根据初值个数为字符组分配内存空间。例如:

char c[]={'h','e','l','l','o'};

则字符数组c的长度由系统自动确定为5。 3.字符数组的引用 对于字符数组元素的使用可以有两种形式:逐个引用形式和整体引用形式。 字符数组的逐个字符引用,与引用数值数组元素类似。 (1)除了可以通过初始化使字符数组中的各个元素得到初值外,也可以使用getchar()scanf()函数输入字符。 例如:

char ch[10]="hello";
int i;
for(i=0;i<10;i++)
scanf("%c",&ch[i]);  /*也可以使用ch[i]=getchar();*/

(2)字符数组的输出 字符数组元素的单个输出,可以用putchar()printf()函数。 例如:

char ch[10]="Hello!";
int i;
for(i=0;i<10;i++)
printf("%c",ch[i]);/*也可以使用putchar(ch[i]);*/

字符串的概念与存储

1.字符串的概念 字符串是包含若干有效字符的字符序列。C语言中的字符串,可以包括字母、数字、特殊字符、转移字符等。 在C语言中字符串是以字符数组的形式存储的。因此声明字符串变量和声明字符数组是一样的。

char string1[30];

字符数组与字符串数组的区别: 以'\0'结尾的是字符串数组。因此对字符数组的操作,如输入、输出、初始化等,就可以进行字符数组的整体操作。 2.字符数组的整体初始化 字符串设置了结束标志以后,对字符数组的初始化,就可以用字符串常量来初始化字符数组。 例如:

char str1[15]={"Hello boy"};

char str1="Hello boy";

等价于

char str1[20]={'H','e','l','l','o',' ','b','o','y','\0'};

注意:字符串结束标志也要占用一个元素的存储空间,因此在声明字符数组长度时,至少为字符串所需长度加1。 3.字符数组的整体引用 (1)使用printf()函数输出字符串

char ch[20]="Hello boy";
printf("%s\n",ch);

输出结果:

在这里插入图片描述

(2)使用scanf()函数输入字符串

char str[20];
scanf("%s",str);

(3)使用puts()函数输出字符串

puts(字符数组);
例如:puts(Hello);

(4)使用gets()函数输入字符串

gets(字符数组);

注意: 使用gets()函数输入的字符串,其长度没有限制,编程者需保证字符数组有足够大的空间来存放输入的字符串。

gets()函数输入的字符串中允许包含空格,而scanf()函数不允许。

常用的字符串处理函数

1.字符串连接函数strcat()strncat strcat()函数:

strcat(字符数组,字符串);
例如:strcat(str1,"Boy!");

功能:把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符串数组”中。 strncat()函数:

strncat(字符数组,字符串,n);
例如:strncat(str1,str2,8);

功能:从字符串中截取n个字符追加到字符数组末尾。 2.strcpy()函数和strncpy()函数

strcpy(字符数组,字符串)

功能:将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。

strncpy(字符数组,字符串,n)

功能:将“字符串”中的前n个字符复制到“字符数组”中。 3.strcmp()函数

strcmp(字符串1,字符串2)

功能:比较两个字符串的大小。 相等的话返回值为0;字符串1<字符串2返回值为负整数;字符串1>字符串2返回值为正整数。 4.strlen函数

strlen(字符串)

功能:求字符串的实际长度。 5.strlwr()函数

strlwr(字符串)

功能:将字符串中的大写字母转换成小写,其它字符不转换。 6.strupr()函数

strupr(字符串)

功能:将字符串中的小写字母转换成大写,其它字符不转换。

今天的文章C语言之字符数组与字符串分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/22228.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注