【时时三省】(C语言基础)字符数组的输入输出
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省
字符数组的输入输出可以有两种方法。
( 1 )逐个字符输入输出。用格式符“% c”输入或输出一个字符.
( 2 )将整个字符串一次输入或输出。用“% s”格式符,意思是对字符串( string )的输人输出。
输出时,遇结束符'\0 '就停止输出。
说明:
( 1 )输出的字符中不包括结束符' \0’。
( 2 )用“% s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。写成下面这样是不对的:
printf ( " % s ",c [ 0 ] );/ / c [ 0 ]不是字符数组名,而是一个数组元素
( 3 )如果数组长度大于字符串的实际长度,也只输出到遇' \0 '结束。
( 4 )如果一个字符数组中包含一个以上' \0 ',则遇第一个' \0 '时输出就结束。
( 5 )可以用scanf函数输入一个字符串。例如:
scanf ( " % s " , c );
scanf函数中的输入项c是已定义的字符数组名,输入的字符串应短于已定义的字符数组的长度。例如,已定义:
char c [ 6 ];
从键盘输入:
China
系统会自动在China后面加一个' \ 0 '结束符。如果利用一个scanf函数输入多个字符串,则应在输入时以空格分隔。例如:
char str1 [ 5 ],str2 [ 5 ],str3 [ 5 ];
scanf (”% s% s% s " , strl , str2 , str3 ) ;
输入数据:
How are you?
由于有空格字符分隔,作为3个字符串输入。在输入完后,strl,str2和str3数组的决态如下:
strl : H o w \0 \0
str2:a r e \0 \0
str 3:y o u ? \0
数组中未被赋值的元素的值自动置'\0 '。若改为
char str [ 13 ];
scanf ( " % s ",str );
如果输入以下12个字符;
How are you?
由于系统把空格字符作为输入的字符串之间的分隔符,因此只将空格前的字符“How”送到str中。把“How“作为一个字符串处理,故在其后加'\0 '。
注意:scanf函数中的输入项如果是字符数组名,不要再加地址符&,因为在C语言中数组名代表该数组第一个元素的地址(或者说数组的起始地址)。
( 6 )前面介绍的输出字符串的方法:
printf ( " % s”,c );
实际上是这样执行的:
按字符数组名c找到其数组第一个元素的地址,然后逐个输出其中的字符,直到遇'\0 '为止。