c - 当不确定它是 int 还是 char 时如何从 stdin 中获取值?

标签 c

stdin 的值可以是字符(在本例中为 p 或 q)或大于零但小于最大值的整数值时,如何取值?

我曾尝试使用 %c 转换字符,但发现这意味着它会丢失第一个数字后的任何内容(显然因为它只需要一个字符)

我应该使用 %i 还是需要换一种方式?我发现 %i 对非整数的任何内容返回 0,但这只会让我检查它是否不是 int 而不是特定的 char?

干杯

最佳答案

查看scanf的返回值:

if (scanf("%d", &intInput) == 0) {
    /* Nothing read. Not an integer! */
    scanf("%c", &charInput);
    /* Process char input */
} else {
    /* Process integer input */

关于c - 当不确定它是 int 还是 char 时如何从 stdin 中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23759482/

相关文章:

c - 如何在C中的结构体中重新分配数组的大小?

c - strlen 是否为二进制和 ascii 数据返回相同的值

在 postgresql 中创建扩展测试

c++ - Linux,在fork()中与另一个程序共享一个缓冲区

c - 如何从C语言的natvis表达式中引用变量本身?

c - TCP 服务器和浏览器作为 C 中的 Web 客户端

c - 如何在 C 中通过引用传递以在函数中正常工作

c - sprintf 的段错误

c - 当我返回一个多维数组时,如何将我的函数中的内容传回我的结构

c - 将两个程序通过管道连接在一起 C Linux