2012-07-31 57 views
1

我剛開始使用C語言,並且遇到此錯誤。我試圖在網上查找,但其他線程包含我不熟悉的ARRAY。圍繞變量「輸入」的堆棧已損壞

#include<stdio.h> 
int main(void){ 

    char input; 
    printf("ASCII testing\n"); 
    scanf("%d", &input); //the error occurs here but would like to know the solution 

    printf("answer is : %c\n" , input); 

    system("pause"); 
    return 0; 
} 

「運行時檢查失敗#2 - 變量'輸入'周圍的堆棧已損壞。」

簡單點出我將非常感激

//編輯

嗯,我想輸入值「66」,這樣的結果將是B. scanf函數(「%C,&輸入)接受來自鍵盤1次擊鍵所以這不是我所期待的。但無論如何,感謝您的答覆

回答

1

scanf()%d格式說明需要一個指向int變量,而不是一個指向char。試試:

int input; 
scanf("%d", &input); 
+0

哈哈感謝它的工作。非常感謝你! – 2012-07-31 22:34:21

5

的問題

%d爲整數輸入格式指示符,導致編譯器假設&輸入指向整數,而不是一個字符。

scanf("%d", &input); 

應該是

scanf("%c", &input); 

爲什麼這破壞了疊層

的原因損壞堆棧是輸入在堆棧上分配,和scanf假定它佔用4個字節(在32位平臺上)而不是實際分配在堆棧上的1個字節。結果,堆棧上的其他內容(其他變量,返回地址等)被覆蓋。

相關問題