2017-03-10 84 views
-1

在這裏,在該代碼時,當我執行它,它有時顯示NT和NF的正確值,有時它顯示正確的nF的但不正確的NT(即0)。 爲什麼如此?不同的輸出生成每次運行的代碼

#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 
int main() 
{ 
    unsigned char nT,nF;  
    puts("Enter No. of Testcases & Faults"); 
    scanf(" %hhu %hhu",&nT,&nF); 
    printf("\n %hhu %hhu",nT,nF); 
} 
+0

可悲的是你們毀了與截圖這個問題。請輸入輸出。 – Bathsheba

+1

我投票關閉這一問題作爲題外話,因爲這個問題已經改變,使得答案是部分不再相關 – KevinDTimm

回答

2

您需要使用%hhu作爲格式說明符的unsigned char。 (模糊,我知道:一個酒吧測驗)。另外,你可能希望將格式化之間引入一些空間:

int read = scanf("%hhu %hhu %s", &nT, &nF, extension); 

目前你的程序的行爲是未定義

此前C99你在你的編譯器的擺佈漂亮多了。


其它注意事項:

  1. 經常檢查scanf返回值,讓你有關已成功讀取輸入數量的有用信息。

  2. extension只對4個字符加上NUL終止符好。

+0

仍然顯示輸出爲0 3「如果我能進入「2 3你好」作爲輸入 –

+3

有「你好」沒有足夠的空間。不要忘記它包含一個終止符。 – Bathsheba

+0

但我使用%s作爲格式說明符 –

相關問題