字符数组的输入输出
1. scanf 输入,printf 输出
scanf 对字符类型有 %c 和 %s 两种格式(printf 同理,下同),其中 %c 用来输入单个字符,%s 用来输入一个字符串并存在字符数组里。%c 格式能识别 空格 跟 换行 并将其输入,而 %s 通过 空格 或 换行 来识别一个字符串的结束。
示例:
#include<stdio.h>
int main()
{
char s[10];
scanf("%s",str);
printf("%s",str);
return 0;
}
输入:TAT TAT TAT
输出:TAT
2. getchar 输入,putchar 输出
getchar 和 putchar 分别用来输入输出单个字符。
示例:
#include<stdio.h>
int main()
{
char str[5][5];
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
str[i][j] = getchar();
}
getchar(); //这句是为了把输入中每行末尾的换行吸收掉
}
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
putchar(str[i][j]);
}
putchar('\n');
}
return 0;
}
3.gets 输入,puts 输出
gets 用来输入一行字符串(注意:gets 识别换行符 \n 作为输入结束,因此 scanf 完一个整数后,如果要使用 gets,需要先用 getchar 接收一个整数后的换行符),并将其存放于数组中;puts 用来输出一行字符串,并紧跟一个换行
示例:
#include<stdio.h>
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;
}
输入:abcd
cdef
efgh
ghijk
输出:与输入一样
注意:如果不是使用 scanf 或 gets 输入字符串(假如使用 getchar),一定要在输入的每个字符串后加入 ‘\0’,否则 printf 和 puts 输出字符串会因为无法识别字符串末尾而输出一大堆乱码。