繁体   English   中英

当我使用scanf()时,我想知道这两者有什么不同

[英]When I use scanf(), I wonder what is different in these two

我不知道怎么解释这个,所以我先给你留个问题。 所以,如果您之前有同样的问题,请原谅我。

#include <stdio.h>

int main()
{
    int a, b;

    scanf("%d %d", &a, &b);
    printf("%d %d", a, b);

    return 0;
}
#include <stdio.h>

int main()
{
    int a, b;

    scanf("%d%d", &a, &b);
    printf("%d %d", a, b);

    return 0;
}

我总是想知道与scanf("%d %d", &a, &b);的区别scanf("%d %d", &a, &b); scanf("%d%d", &a, &b); 当我编码。 所以我的问题是,这两个代码在功能上是否相同?

两段代码之间没有区别 无论哪种方式都有效,您可以使用您喜欢的任何一种方式。

但是,如果考虑%c即char数据类型说明符,那么事情会变得有趣。 为了理解差异,请考虑以下程序:

    int main()
    {
        char x,y; //declaring two variable of char data type
        printf("Part 1");
        scanf("%c%c",&x,&y); //no space between the specifiers
        printf("%c %c",x,y);
        printf("Part 2");
        scanf("%c %c",&x,&y); //single white space between the specifiers.
        printf("%c %c",x,y);
        return 0;
    }

程序执行时的屏幕截图 在此输入图像描述

在第1部分中,变量x存储char“A”和变量y store“”(空格)。 在这种情况下,空间被视为输入,因此忽略实际输入。 在第2部分中,变量x存储“A”并且y存储“B”,因为明确提到在输入中期望空白。

希望这可以帮助 :)

它们完全一样。

许多格式说明符占用前导空格。 d是其中之一。 格式字符串中的空格字符是使用空格的显式请求。 他们只需要之前非空白耗时格式说明- c[n

是否包含空间角色是风格问题。


标准参考:N1570 7.21.6.2/5 fscanf功能

由白色空格字符组成的指令通过读取第一个非空白字符(仍然未读取)的输入来执行,或者直到不再能够读取字符为止。 该指令永远不会失败。

7.21.6.2/8

除非规范包含[cn说明符,否则将跳过输入空白字符(由isspace函数指定)。 284)

284)这些空白字符不计入指定的字段宽度。

7.21.6.4/2 scanf函数

scanf函数等同于fscanf ,其参数stdin插入到scanf的参数之前。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM