每次运行代码时都会生成不同的输出

时间:2017-03-10 17:16:18

标签: c scanf

在这段代码中,当我执行它时,它有时会显示正确的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);
}

1 个答案:

答案 0 :(得分:2)

您需要使用%hhu作为unsigned char的格式说明符。 (模糊我知道:一个用于酒吧测验。)另外,您可能想在格式化程序之间引入一些空格:

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

目前,您的程序的行为是 undefined

在C99之前,你几乎完全受编译器的支配。

补充说明:

  1. 始终检查scanf的返回值,它会为您提供有关成功读取的输入数量的有用信息。

  2. extension仅适用于4个字符和nul-terminator。