在C语言中引入字符串后,使字符数组的输入/输出将变得更加简单方便。字符数组的输入/输出有3种方法。
(1)逐个字符输入/输出。要使用格式符"%c"输入或输出一个字符,此时,数组中的每个元素相当于一个字符变量。例如:
char c[5] ;
scanf( "%c%c%c%c%c" , &c[0] ,&c[ 1 ] ,&c[2] ,&c[3] ,&c[4] ) ;
printf("%c%c%c%c%c" ,c[0] ,c[ 1 ] ,c[2] ,c[3] ,c[4] ) ;
(2)使用循环逐个字符输入/输出。例如:
(3)将整个字符串一次输入或输出,要使用"% s"格式符,实现的是对字符串整体的输入/输出。例如:
char c[5] ;
scanf("%s" , c) ;
printf("%s" ,c) ;
此时应注意输入语句中的c不加取地址运算符,这是因为在C语言中规定,数组名就代表了该数组的首地址。如写作“scanf( " % s" , &c) ;”是错误的。
整个数组是以首地址开头的一块连续的内存单元。字符数组c在内存中的存放情况可表示为:
在本例的printf()函数中,执行函数printf("%s" ,c)表示输出的是一个字符串,按数组名c找到首地址,然后逐个输出数组中各个字符直到遇到字符串终止标志'\0'为止,不能写为“printf("%s" ,c[ ] ) ;”。
本例中由于定义数组长度为5,因此输入的字符串长度必须小于5,以留出一个字节用于存放字符串结束标志'\0'。应该说明的是,对一个字符数组,如果不作初始化赋值,则必须说明数组长度。还应该特别注意的是,当用scanf()函数输入字符串时,字符串中不能含有空格,否则将以空格作为字符串的结束符。如果字符串中本身包含空格,并希望完成空格的输入或输出,则需要创建多个字符数组来完成。
例6.5 字符串的输入/输出。(www.daowen.com)
编写程序:
创建一个名为“eg6_5.c”的新文件,在编辑窗口中输入下面的程序代码。
运行结果:
程序说明:
(1)通过for循环结构输入/输出字符的方式是以字符为单位的,操作对象为数组中的各个元素而不是整个数组。因此,输入/输出语句采用的格式符为"% c",每次输入/输出一个字符。
(2)通过字符串方式是以字符串为单位的,操作对象为整个字符串,因此,输入/输出采用的格式符为"%s",一次输入/输出整个数组,不需要用循环。输入时,输入变量为数组名,不需要加取地址符号。
思考:如果本例中第二次输入也是"I am a student",第二次的输出结果是什么?
说明:
(1)用"%s"格式符输出字符串时,对于一维数组,printf ()函数中的输出项是字符数组名(地址),而不是数组元素名;对于二维数组,只写行下标时表示地址。
(2)如果数组长度大于字符串实际长度,则遇'\0'结束输出。
(3)输出字符不包括结束符'\0'。
(4)如果一个字符数组中包含一个以上的'\0',则遇第一个'\0'时就结束输出。
(5)可以用scanf()函数输入一个字符串。如果利用一个scanf()函数输入多个字符串,则在输入时,以回车或空格作为结束标志,即用scanf ()输入的字符串中不能含有空格。
(6) scanf ()函数中的输入项是字符数组名时不要再加取地址运算符&,因为在C语言中数组名即代表该数组的起始地址。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。