2017-03-10 58 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作为格式说明符 –

相关问题