scanf(“占位符”,&变量);
例:
do
{
printf("请输入合法的数字:\n");
do
{
printf("tttttt\n") ;
sum = sum + num;
status = scanf("%f",&num);//数值的
printf("xxxxxx\n") ;
} while (getchar() != '\n' && status == 1);
}while (status == 1);
输入 1a 中间不加字母按回车键 只会打印xxx ttt;解释: scanf()读到了1a不理解,但是会返回1,因为的确读到了一个输入流,float型,没有问题但是a呢?不晓得;
看看弹出条件while(getchar() !=‘/n’&& status == 1 )两个条件破坏任何一个都跳出;先看status == 1;刚刚解释过了没有问题 ; getchar()!=‘\n’现在交互界面在scanf 哪里卡住了 输入完 1a 再 按enter scanf会当作什么操作都没有,scanf会掠过空字符,空格、换行、指标键tab、等;
最后因为这个程序支持多个字符连续输入的功能(输入时最好将空格隔开特别是数字与数字,数字与空格);但是内核还是单个信息挨个处理的,逻辑是先堆积在程序运行的门口,按下回车键之后,数据排队被处理,假装你是在单个输入;只是提前排了一个队,不会开始打饭;^_^