[英]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
功能 :
由白色空格字符组成的指令通过读取第一个非空白字符(仍然未读取)的输入来执行,或者直到不再能够读取字符为止。 该指令永远不会失败。
除非规范包含
[
,c
或n
说明符,否则将跳过输入空白字符(由isspace
函数指定)。 284)284)这些空白字符不计入指定的字段宽度。
scanf
函数等同于fscanf
,其参数stdin
插入到scanf
的参数之前。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.