赞
踩
字符数组就是char数组,当维度是一维时可以当作“字符串”。当维度是二维时可以当作字符串数组,即若干字符串。字符数组的输入除了使用 scanf外,还可以用 getchar或者ges其输出除了使用 printf外,还可以用 putchar或者puts。下面对上述几种方式分别进行介绍:
scanf对字符类型有%c和%s两种格式( printf同理,下同),其中%c用来输入单个字符,%s用来输入一个字符串并存在字符数组里。%c格式能够识别空格跟换行并将其输入,而%s通过空格或换行来识别一个字符串的结束。示例如下:
- #include<cstdio>
- int main(){
- char str[10];
- scanf("%s",str);
- printf("%s",str);
- return 0;
- }
可以看到,%s识别空格作为字符串的结尾,因此后两个TAT不会被读入。另外, scanf在使用%s时,后面对应数组名前面是不需要加&取地址运算符的。
getchar和 putchar分别用来输入和输出单个字符,这点在之前已经说过,这里简单举二维字符数组的例子:
- #include<cstdio>
- int main(){
- char str[5][5];
- for(int i=0;i<3;i++){
- for(int j=0;j<3;j++){
- str[i][j] = getchar();
- }
- }
- for(int i=0;i<3;i++){
- for(int j=0;j<3;j++){
- putchar(str[i][j]);
- }
- putchar('\n');
- }
- return 0;
- }
gets用来输入一行字符串(注意:gets识别换行符n作为输入结東,因此 scanf完一个整数后,如果要使用gets,需要先用 getchar接收整数后的换行符),并将其存放于一维数组(或二维数组的一维)中;puts用来输出一行字符串,即将一维数组(或二维数组的一维)在界面上输出,并紧跟一个换行。示例如下:
- #include<cstdio>
- int main(){
- char str1[20];
- char str2[5][10];
- gets(str1);
- for(int i=0;i<3;i++){
- gets(str2[i]);
- }
- puts(str1);
- for(int i=0;i<3;i++){
- puts(str2[i]);
- }
- return 0;
- }
在上例的代码中通过gets(str1)将第一个字符串存入字符数组str1中,然后通过for循环将后三个字符串传入二维数组str[i],之后使用puts将这些字符串原样输出;
输入一行字符串还可以使用cin.getline();请参考:https://blog.csdn.net/qq_42410605/article/details/102508019
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。