新手请问scanf()自动跳过的有关问题
新手请教scanf()自动跳过的问题
先上代码
扫描is_teacher的那个scanf每次都跳过然后就运行else里面的non_teacher,不知道怎么回事。 把is_teacher换成int 'Y'变成1就没有问题。是我scanf里面的书写有问题吗?
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
因为 %s 不读取空白字符 包括 制表符空格符回车符等等
然后换成%s是不可取的 %s会多写入一个字符'\0' 但是你只提供了一个char
错误类似数组越界
"%c" 换成 " %c"注意有一个空格 就行了
先上代码
- C/C++ code
#include "stdio.h" #include "stdlib.h" #include "math.h" double teacher_total(double _amount) { double total; printf("Total purchases $%6.2lf\n", _amount); if(_amount >= 100) { total = _amount * (1 - 0.12); printf("Teacher's discount (12%%) %6.2lf\n", _amount * 0.12); printf("Discounted total $%6.2lf\n", total); } else{ total = _amount * (1 - 0.10); printf("Teacher's discount (10%%) %6.2lf\n", _amount * 0.10); printf("Discounted total $%6.2lf\n", total); } printf("Sales tax (5%%) %6.2lf\n", total * 0.05); printf("Total $%6.2lf\n", total * 1.05); } double non_teacher(double _amount) { printf("Total purchases $%6.2lf\n", _amount); printf("Sales tax (5%%) %6.2lf\n", _amount * 0.05); printf("Total $%6.2lf\n", _amount * 1.05); } int main() { double amount; char is_teacher; printf("KEITH'S SHEET MUSIC CALCULATOR\n"); printf("Please enter the total amount for purchase ($):\n"); scanf("%lf", &amount); printf("Are you a music teacher? "); scanf("%c", &is_teacher); printf("\n"); printf("RECEIPT\n"); if(is_teacher == 'Y') { teacher_total(amount); } else{ non_teacher(amount); } system("PAUSE"); return 0; }
扫描is_teacher的那个scanf每次都跳过然后就运行else里面的non_teacher,不知道怎么回事。 把is_teacher换成int 'Y'变成1就没有问题。是我scanf里面的书写有问题吗?
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
因为 %s 不读取空白字符 包括 制表符空格符回车符等等
然后换成%s是不可取的 %s会多写入一个字符'\0' 但是你只提供了一个char
错误类似数组越界
"%c" 换成 " %c"注意有一个空格 就行了