c - 如何在 C 中使用 scanf 设置部分默认输入?

标签 c scanf

我是编程新手,我正在为数值分析类(class)编写一个将十进制转换为二进制的程序。我对如何处理可变形式的输入有点困惑。例如,输入可以是以下两种形式之一:

输入:15输入:15 ​​/2

如果只是这两种情况中的一种,我知道如何处理两种情况中的输入:

scanf("%d", &userInput);scanf("%d/%d", &numerIn, &denomIn);

我尝试了很多策略,但都没有成功。我接近以下结果:

    (1)    int numerIn, denomIn = 1;        
    (2)    printf("Enter decimal number: ");
    (3)    scanf("%d", &numerIn);
    (4)    if (!feof(stdin)) {
    (5)       scanf(" / %d", &denomIn);
    (6)    }

不幸的是,这并不顺利。我试过在第 3 行和第 5 行中的 %d 和/前后使用不同的空格组合,但无济于事。我还认为也许有一些方法可以编写程序,如果在第一个整数之后没有输入任何内容,程序可以知道自动默认使用 denomIn 中的默认值 1,但我无法弄清楚还是。

有没有办法解决我忽略的这个要求?我是 C 编程的新手,所以我很可能在这里犯了一个令人尴尬的新手错误。话虽这么说,是否有任何好的文章可以准确解释输入缓冲区的工作原理?这让我有点困惑。

提前致谢!在这一点上,任何见解都将不胜感激。

最佳答案

  1. 使用 fgets 读取整行.

  2. 使用 strtok解析该行。

fgetsstrtok 的链接提供了示例代码,您可以将其用作起点。

关于c - 如何在 C 中使用 scanf 设置部分默认输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32598830/

相关文章:

c++ - 共享库的动态链接或动态加载?

c# - 使用 C# 4.0 中的匿名函数,为什么我不能定义内联委托(delegate)

c - haskell FFI : Wrapping a C struct containing a separately allocated string (char*)

c - AVR 上的 FatF,是否有最大化写入速度的策略?

c - 如何防止 scanf 失败导致无限循环

c - 为什么我的字符没有使用scanf(C语言)扫描

c++ - 用c++编译c时出现链接错误

c - scanf 不读取 mychars

在不使用字段数的情况下检查 scanf(..) 是否成功——有办法吗?

c - 读取数据文件 - 数组末尾不需要的额外值