最近做题发现一个问题
读字符不能用scanf(其实可以,方法要对)
scanf("%c",&ch);
读入一个字符,输出ASCii码的值
#include <bits/stdc++.h>
using namespace std;
char ch;
int main()//
{
int i=0;
while(1)
{
scanf("%c",&ch);
printf("%d ",ch);
}
return 0;
}
输出结果是:
发现输入一个a,执行了两次循环,输出了两个值
97是a的ASCii码的值,
而10是"\n"的值
这说明回车也被读进去了
其实可以这样读:在%c前加一个空格
scanf(" %c",&ch);
结果是
就完事了
用cin读:
#include <bits/stdc++.h>
using namespace std;
char ch;
int main()//
{
int i=0;
while(1)
{
cin>>ch;
printf("%d ",ch);
}
return 0;
}
结果是:
没有问题
当用getchar()读时
#include <bits/stdc++.h>
using namespace std;
char ch;
int main()//
{
while(1)
{
ch=getchar();
printf("%d ",ch);
}
return 0;
}
结果: