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

标签 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);
}

最佳答案

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

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

目前您的程序的行为未定义

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

<小时/>

进一步说明:

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

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

关于c - 每次运行代码时都会生成不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42724104/

相关文章:

mysql - 尝试通过以下方式将 sql 文件导入到远程数据库。程序

c - 从文件读入字符数组

c - 如何清除 C 程序中的标准输入?

c++ - 在执行其他功能的同时播放动画(LED Matrix 和 Arduino/ESP8266)

c - C 中的 abort() 函数是否清理堆栈?

c - 如何在C中读取和打印txt文件的内容

c - 跳过逗号和列读取 C 输入

c中的字符数组消隐

调用将整数存储在 C 数组中的函数

C++ 从字符串中获取小时和分钟