在调试下面的代码时出现访问冲突的问题
问题描述:
用软件**VS2017**编写了下面C语言的代码,调试时出现访问冲突的问题
#include
#include
int main()
{
double number1 = 0.0;
double number2 = 0.0;
char operation=0;
printf("\nEnter the caculation\n");
scanf_s("%lf %c %lf", &number1, &operation, &number2);
switch (operation)
{
case '+':
printf("= %lf\n", number1 + number2);
break;
case'-':
printf("= %lf\n", number1 - number2);
break;
case'*':
printf("= %lf\n", number1*number2);
break;
case'/':
if (number2 == 0)
printf("\n\n\aDivision by zero error!\n");
else
printf("= %lf\n", number1 / number2);
break;
case'%':
if ((long)number2 == 0)
printf("\n\n\aDivision by zero error!\n");
else
printf("= %ld\n", (long)number1 % (long)number2);
break;
default:
printf("\n\n\aIllegal operation!\n");
break;
}
system("pause");
return 0;
}
想知道具体该怎么解决
答
scanf_s 要求连续输入不同类型的数据时,要限制输入缓冲区的大小,所以你应该这样改:
scanf_s("%lf %c %lf", &number1, &operation, 1, &number2);