Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 每次运行代码时都会生成不同的输出_C_Scanf - Fatal编程技术网

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

C 每次运行代码时都会生成不同的输出,c,scanf,C,Scanf,在这段代码中,当我执行它时,它有时显示nT和nF的正确值,有时显示正确的nF但不正确的nTi.e 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",&am

在这段代码中,当我执行它时,它有时显示nT和nF的正确值,有时显示正确的nF但不正确的nTi.e 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作为未签名字符的格式说明符。我知道,这是一个酒吧小测验。此外,您可能希望在格式化程序之间引入一些空格:

int read = scanf("%hhu %hhu %s", &nT, &nF, extension);
目前,程序的行为尚未定义

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

进一步说明:

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

扩展名仅适用于4个字符加上nul终止符


遗憾的是,你用截图毁了这个问题。请键入输出。我将投票关闭此问题,因为该问题已更改,部分答案不再相关。如果我输入“2 3 hello”作为输入,则仍将输出显示为“0 3”。此处没有足够的空间容纳hello。别忘了它包含一个nul-terminator。那又怎样?还是没有地方。文字Hello需要6个字节,而不是5个字节。我从scanf中删除了扩展名,但问题仍然存在。是否检查scanf的返回值?考虑在格式化程序之间引入一些空格,我现在把它添加到答案中。