首頁(yè)
社區(qū)
課程
招聘
簡(jiǎn)單代碼 報(bào)錯(cuò) 溢出 (本人小白一個(gè))

Run-Time Check Failure #2 - Stack around the variable 'b' was corrupted.

 

#include <stdio.h>

 

#define CLEARBUFF scanf("%[^\n]%c")

 

int main()
{

int a = 0;
int b = 0;
char c = '0';
int d = 0;
printf("請(qǐng)輸入 一個(gè)數(shù)字");
scanf_s("%d",&a);
CLEARBUFF;
printf("請(qǐng)?jiān)谳斎?一個(gè)數(shù)字:");
scanf_s("%d",&b);
CLEARBUFF;
printf("請(qǐng)輸入符號(hào):");
scanf_s("%s",&c,10);
CLEARBUFF;

switch (c)
{
case '/':
    d = a / b;
    break;
case '+':
    d = a + b;
    break;
case '-':
    d = a - b;
    break;
case '*':
    d = a * b;
    break;
default:
    printf("輸入字符錯(cuò)誤\r\n");
    break;

}


printf("結(jié)果:%d",d);

}

收藏
1條回答
0346954 2021-8-11

在printf("請(qǐng)輸入符號(hào):");語(yǔ)句下面加上語(yǔ)句
getchar();//加這個(gè) 是因?yàn)闉樽兞縝賦值時(shí) 輸入了 b的值 以及一個(gè)回車(chē)鍵 如果不加getchar(),那么下面c獲取到的是\n換行符

 

scanf_s("%s",&c,10);修改為
scanf_s("%c", &c, 1);//使用%c獲取一個(gè)字符,%s是獲取字符串,此處應(yīng)為獲取字符,最后一個(gè)參數(shù)為1 代表字符C最多容納一個(gè)字符

回復(fù)
  參與學(xué)習(xí)     人
  提問(wèn)次數(shù)     100 個(gè)
我的問(wèn)答 領(lǐng)取收益
0
我的提問(wèn)
0
我的回答
0
學(xué)習(xí)收益