当我们要循环读入一个字符和一个整型时
程序如下:
#include <stdio.h>
int main() {
char ch;
int n;
while(~scanf("%c%d",&ch,&n)){
printf("ch = %c n = %d\n",ch,n);
}
return 0;
}
看结果:
可以看出,有乱码的现象
我们知道:%c功能比较强大,几乎任何符号都可以输入,我们在输入字符与整型的时候,用的是分隔符(空格)来隔开,当输入多了就混乱了
改进:将 while(~scanf("%c%d",&ch,&n)){
中%c换为%s,即字符被当做字符串输入,分隔符空格被认为字符串结束符‘\0’
如下代码
#include <stdio.h>
int main() {
char ch;
int n;
while(~scanf("%s%d",&ch,&n)){
printf("ch = %c n = %d\n",ch,n);
}
return 0;
}
看结果:
或者干脆就定义一个元素的字符型数组
#include <stdio.h>
#include <string.h>
int main() {
char ch[1];
int n;
while(~scanf("%s%d",ch,&n)){
printf("ch = %c n = %d\n",ch[0],n);
}
return 0;
}