在这段代码中,当我执行它时,它有时会显示正确的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 :(得分:2)
您需要使用%hhu
作为unsigned char
的格式说明符。 (模糊我知道:一个用于酒吧测验。)另外,您可能想在格式化程序之间引入一些空格:
int read = scanf("%hhu %hhu %s", &nT, &nF, extension);
目前,您的程序的行为是 undefined 。
在C99之前,你几乎完全受编译器的支配。
补充说明:
始终检查scanf
的返回值,它会为您提供有关成功读取的输入数量的有用信息。
extension
仅适用于4个字符和nul-terminator。