在这段代码中,当我执行它时,它有时会显示正确的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);
}
最佳答案
您需要使用%hhu
作为unsigned char
的格式说明符。 (晦涩的我知道:一个用于发布测验。)此外,您可能希望在格式化程序之间引入一些空格:
int read = scanf("%hhu %hhu %s", &nT, &nF, extension);
当前,您的程序的行为是不确定的。
在C99之前,您几乎完全可以依靠编译器。
进一步说明:
始终检查
scanf
的返回值,该返回值为您提供有关成功读取的输入数量的有用信息。extension
仅适用于4个字符和nul终止符。关于c - 每次我运行代码时都会生成不同的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42724104/