#include"stdio.h"
void main()
{
char ch1,ch2,ch3;
scanf("%c%*c%c",&ch1,&ch2,&ch3,&ch3);
printf("ch1=%c,ch2=%c,ch3=%c\n",ch1,ch2,ch3);
}
都没用过%*c吗?我来说一下我理解的浅见吧,%*c是跳过一个字符,就是你输入任何一个字符,也不会赋给ch2,到你输第三个字符的时候,才赋给ch2,但当你输第四个字符的时候scanf里面只有三个值的赋值,所以,第四个字符不会被读取,而这时,输出ch3的值,因为没有初值,是看内存定的,如果CPU里那段内存是问号,那就是问号,你可以试试这样写
#include"stdio.h"
void main()
{
char ch1,ch2,ch3;
scanf("%c",&ch1,&ch2,&ch3);
printf("ch1=%c,ch2=%c,ch3=%c\n",ch1,ch2,ch3);
}
scanf里面只用一个%c,再输出,看ch2跟che3值,都是未定义的值,所以,其实你上面那段scanf,实际就是两个%c,总结一下,%*c跟%c是两回事,%*c是跳过读取一个字符。
#include"stdio.h"
void main()
{
char ch1,ch2,ch3;
scanf("%c%*c%c",&ch1,&ch2,&ch3,&ch3,&ch3);//也可以后面多加一个ch3读取,你就知道了,第二个你输入的字符,是被跳过,并未读取。我们当作忽略吧
printf("ch1=%c,ch2=%c,ch3=%c\n",ch1,ch2,ch3);
}
如果再不懂,可能是我表达的不好。。。组织能力有限,浅见,勿喷