2017-03-10 8 views
-1

このコードでは、実行すると正しい値のnTとnFが表示されることがあります。 なぜそれはそうですか?コードを実行するたびに異なる出力が生成される

#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

あなたはunsigned charのための書式指定子として%hhu使用する必要があります。 (あいまいな私が知っている:パブのクイズのための1)また、あなたはあなたのフォーマッタの間にいくつかのスペースをご紹介することがあります:

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

現在、あなたのプログラムの動作は未定義です。

C99より前には、コンパイラの慈悲をかなり前にしていました。


さらに注記:

  1. は、必ずあなたに正常に読み取られ、入力数に関する有益な情報が得られますscanfの戻り値を確認してください。

  2. extensionは、4文字とヌルターミネータにのみ有効です。

+0

入力として「2 3 hello」と入力した場合、「0 3」として出力が表示されます。 –

+3

"こんにちは"のための十分な部屋ではありません。ヌルターミネーターが含まれていることを忘れないでください。 – Bathsheba

+0

ですが、%sをフォーマット指定子として使用しています –

関連する問題