【问题标题】:Newline character(\n) in scanf [duplicate]scanf中的换行符(\ n)[重复]
【发布时间】:2017-07-29 21:27:25
【问题描述】:

假设我写下面的代码:

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d\n",&a);
    printf("%d",a);
    return 0;
}

输入被接受,光标在下一行闪烁,没有打印a的值。
但如果我删除 \n 字符,它会在下一行自动打印 a 的值。
即使我在scanf (scanf("%d\n",&amp;a);) 中的%d 之前放置了\n,它也不会将光标移动到下一行并接受输入,而不是在下一行接受输入。那么,scanf 会自动在下一行输入吗? \n 不能和scanf 函数一起使用吗??

实际上,我的问题是要我在三行中输入三个整数。写的是Input: Three integers on three lines.
但是在尝试在scanf 中使用\n 时,它只会在输入后在下一行显示光标闪烁。

【问题讨论】:

    标签: c printf newline scanf


    【解决方案1】:

    scanf() 的格式字符串中的任何空白字符(由isspace() 确定)将导致它读取并丢弃字符,直到读取的下一个字符为非空白字符,或发生错误。

    除了数字之外,您没有输入任何其他非空格?好吧,等着玩吧。

    【讨论】:

    • 感谢您的帮助,但我没有得到它,请您简单解释一下。我刚刚输入了一个数字并按下了输入,但它没有打印我输入的数字。跨度>
    • @MathsManiac:当然还在等待。它将继续等待,直到您在数字后键入不是空格的内容。你可以输入一个字母、一个数字或一个标点符号——但输入空格、制表符或换行符只会让scanf() 寻找其他东西。从输入格式中删除尾随的换行符——这样的尾随空格对于交互式 I/O 来说是无条件的灾难,对于非交互式 I/O 来说很少是明智的。如果要读取输入行,请使用 fgets() 或 POSIX getline(),然后解析读取的内容。
    猜你喜欢
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 2012-03-19
    相关资源
    最近更新 更多