2015-05-19 34 views
0

我在用C寫這個簡單的短代碼,並不能讓它正常工作:簡單scanf函數不設置變量值

#include <stdio.h> 

int main(void) { 
    char var1[2]; 
    int var2, var3; 
    unsigned char var4; 

    scanf("%s %d %d %d", var1, &var2, &var3, &var4); 
    printf("%s %d %d %d\n", var1, var2, var3, var4); 

    return 0; 
} 

如果我輸入P2 45 45 200,我得到P2 45 0 200,我無法理解爲什麼var3沒有收到指定的值。

輸入:P2 45 45 200

預期輸出:P2 45 45 200

輸出:P2 45 0 200

回答

3

var4,聲明它作爲unsigned char,但使用%d格式說明,它調用未定義的行爲讀它。

如果您的編譯器支持,我會推薦使用%hhu作爲該字段的格式說明符。或者您可以聲明var4int,然後 然後將其分配給scanf()調用後的unsigned char變量。

+0

謝謝,它像一個魅力。 –