字符串是有限个字符的有序集合,前面讲的char类型用于表示和存储单个字符,字符串相当于几个或多个char类型的有序集合,用于表示和存储多个有序的字符序列。字符串必须包含在一对“”(双引号)之内。例如:“I want to learn Java programming”、“我要学C编程”、“3+5=8”、“abc”等等。
C语言没有给字符串类型定义一个关键字,用于声明字符串类型,而是通过字符数组的方式提供对字符串的操作和存储。字符数组也是数组,其声明方式与数值型数组相同。例如:下面声明一个包含10个字符元素的str。
char str[10];
声明字符数组后,字符数组str就可以像其它数组一样使用。C语言为字符数组提供了特殊的初始化方式,方便对字符串的操作。
char str[] = “Hello World”;
对数组每个元素赋值的的初始化方式也可以使用,需要注意的是字符数组的最后一个元素是转义符'\0',表示一个字符串的结束。
char str[]={'H','e','l','l','o','\0'};
字符数组的最后一个元素必须是转义符'\0',该转义符为字符串的结束符号。
printf()函数提供格式化符“%s”可以输出一个字符串,和“%s”匹配的是字符数组变量,并且字符数组的最后一个元素必须是转义符'\0'。
使用scanf()函数可以从终端接收用户输入的字符串,格式化输入符为“%s”,接收的数据类型为字符数组,声明的字符数组长度必须且至少要比用户输入的字符个数多1,因为字符数组还需要容纳字符串的结束符。
char str[20];
scanf("%s",str);
在上述代码中,用户输入的字符串长度(即用户输入的字符个数)不能大于19,否则程序会报错。
例【1】 字符串输入与输出练习
程序清单 sample.c
#include <stdio.h>
void main()
{
/*
声明字符数组str,用于接收用户输入的字符串
用户输入的字符个数不能大于str的长度
*/
char str[30];
// str接收用户输入的字符串
scanf("%s",str);
// 输出字符串
printf("%s",str);
}