笔者在之前联系的时候忽然意识到scanf_s在连用的时候,实际上第一个以后的scanf_s都被忽略了,如下所示,只有第一个scanf_s和getchar为实际可输入的地方:
int main(void){
int a;
int b;
scanf_s("%d",&a);
scanf_s("%d",&b);
}
为了解决这种问题,最简单的办法就是在两个scanf_s中间插入一个getchar(),来取掉scanf_s带出来的一个多余的空格
int main(void){
int a;
int b;
scanf_s("%d",&a);
getchar();
scanf_s("%d",&b);
}
在修改完以后,vs2019中可能会出现C6031警告:返回值被忽略,这是因为你去掉的空格没有实际输出的原因,不影响程序的正常运行。
以下附上练习中的代码:
#include <stdio.h>
void function1(int a, int b) {
printf("x + y = %d\n", a + b);
}
void function2(int a, int b) {
printf("x*y = %d\n", a * b);
}
int main() {
void function1(int, int);
void function2(int, int);
char letter;
int a;
int b;
scanf_s("%d", &a);
getchar();
scanf_s("%d", &b);
getchar();
letter = getchar();
switch (letter)
{
case 'A': function1(a,b);
break;
case 'B': function2(a,b);
break;
default: printf("wrong mode!\n");
}
return 0;
}
|