【问题标题】:Using "\n" in scanf() in C [duplicate]在 C 中的 scanf() 中使用“\n”[重复]
【发布时间】:2013-03-04 19:42:51
【问题描述】:

我在我的一个程序中错误地使用了scanf("%d\n",&val);,我无法理解行为,功能显示。

int main(){
    int val;
    scanf("%d\n", &val);
    printf("%d\n", val);
    return 0;
}

现在程序需要 2 个整数输入,并打印输入的第一个输入。 额外的\n 应该带来什么不同?

我试图搜索但找不到答案,即使通过scanf的手册。

【问题讨论】:

    标签: c scanf


    【解决方案1】:

    格式字符串中的'\n' - 或任何空白字符 - 会占用输入中的整个(可能为空的)空白字符序列。因此scanf 仅在遇到下一个非空白字符或输入流的结尾时返回(例如,当输入从文件重定向并到达其结尾时,或者在您使用 Ctrl-D 关闭标准输入之后) .

    【讨论】:

      【解决方案2】:

      来自我的 Linux 机器中的 man scanf

      指令是以下之一:

      一系列空白字符(空格、制表符、换行符等;参见 isspace(3))。该指令匹配输入中任意数量的空白,包括无空白。

      顺便说一句,%d 也是一个指令

      所以你的"%d\n" 有两个指令,第一个读取数字,第二个......很好地读取任意数量的空白,包括你的行尾。您必须键入任何非空白字符才能使其停止。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-03
        • 2016-03-07
        • 1970-01-01
        • 2016-02-29
        • 1970-01-01
        相关资源
        最近更新 更多