scanf函数如何在C中工作?

尼哈尔·雷迪(Nihal Reddy)
#include <stdio.h>

int main() {
    int a, b;
    printf("Enter the values of a and b");
    scanf(" %d%d ", &a, &b);
    printf("a=%d b=%d", a, b);
    return 0;
}

为什么我们必须插入3个输入,因为双引号前后都有空格?

chqrlie

您的scanf()格式" %d%d "有多余的空格,并带有不希望的副作用:

  • 第一个是多余的,它指示scanf()跳过任何前导空格,但这已经作为%d转换的一部分进行了去掉它。

  • 尾随的引起您的问题:它告诉scanf()您跳过第二个整数之后的所有尾随空格。因此,它将继续读取输入,直到看到不是空格或流末尾的内容。也将其删除。

请注意,scanf()在使用它们的值之前,还应验证是否已转换2个整数。还要始终打印尾随换行符,因为如果不这样做,某些系统将无法正确刷新输出。

#include <stdio.h>

int main(void) {
    int a, b;
    printf("Enter the values of a and b: ");
    if (scanf("%d%d", &a, &b) == 2) {
        printf("a=%d b=%d\n", a, b);
    }
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章