字符的输入输出
- 输入一个字符:getchar()
输出一个字符:putchar()(字符变量或常量)
char ch = getchar();
putchar(ch);
#include <iostream>
using namespace std;
int main()
{
char ch;
int i = 1;
while(ch = getchar())
{
cout << i << ":" << (int)ch << endl;
i++;
}
return 0;
}
预期:当执行到while循环时,程序停下来,等待你输入,你输入一个字符按下回车,它会把你的字符输出;然后继续停下来,等待你的第二次输入,实际不是这样的。
一个字符+按下回车=每轮输入执行了两次
并不是程序执行到getchar它就停下来等待你的输入,而是执行到这句时,并且按过回车键且当前缓冲区还有字符,getchar从数据缓冲区首部取数据返回给对应的变量
缓冲区空才等待输入
- 输入一个字符还可以用:scanf()
输出一个字符还可以用:printf()
char ch ;
scanf("%c",&ch);
printf("%c",ch);
getchar()和putchar()效率优于scanf()和printf()
字符输入输出要注意的问题
输入一个数字n,接下来输入n组数据,每组两个字符,每输入一组数据则输出这组数据,每组输出占一行
#include <iostream>
using namespace std;
int main()
{
int n;
char a,b;
scanf("%d",&n);
while(n > 0)
{
scanf("%c%c",&a,&b);
printf("%c%c\n", a, b);
n--;
}
return 0;
}
scanf在接受输入时,会把回车、空格、制表符当成普通字符
#include <iostream>
using namespace std;
int main()
{
int n;
char a,b;
scanf("%d",&n);
getchar();//回收回车、空格、制表符
while(n > 0)
{
scanf("%c%c",&a,&b);
getchar();//回收回车、空格、制表符
printf("%c%c\n", a, b);
n--;
}
return 0;
}
- 输入一个字符还可以用:cin
输出一个字符还可以用:cout
char ch;
cin>>ch;
cout<<ch;
#include <iostream>
using namespace std;
int main()
{
char ch;
int i = 1;
while(true)
{
cin >> in;
cout << i << ":" << (int)ch << endl;
i++;
if((int)ch == 10)
i = 1;
}
return 0;
}
cin从键盘缓冲区中取字符的时候会过滤掉空格、回车、制表符,这些特殊字符不会传给ch。