2014-02-06 16 views
2

我正在編寫一些基本代碼來學習printf和scanf函數,但是當通過scanf函數輸入整數時,printf函數返回完全不同的數字。類似的事情發生在輸入字符時,只有printf函數會顯示一個正方形。代碼存在問題,還是其他問題?Printf從scanf輸入錯誤的數字返回

#include <stdio.h> 
int main() 
{ 
    char letter; 
    int num1,num2; 
    printf("Enter any one keyboard character: "); 
    scanf("%c", &letter); 
    printf("Enter any two integers separated by a space: "); 
    scanf("%d %d", &num1, &num2); 

    printf("Numbers output %d and %d \n" , &num1, &num2) ; 
    printf("letter input %c\n" , &letter) ; 
    printf("stored at %p" , &letter) ; 
    return 0; 
} 

每當任何整數或字符被輸入,2686680和2686676顯示代替整數和填充在矩形顯示,而不是字符。

任何幫助將不勝感激,謝謝!

回答

3

&letter表示存儲了printf正確的變量letter的地址。您應該在printf參數中使用letter,因爲

printf("%d\n", letter); // prints the value stored in letter 

printf("%p\n", &letter); // prints the address where letter is stored in memory