0

a任何人都可以建议以下调用的含义是什么scanf

scanf("%d a %f",&i,&f)
4

3 回答 3

3

调用中以“%”开头的字符scanf表示变量。

例如%d表示整数变量,而%f表示浮点变量。

前面没有 a %(或 a \,表示转义序列)的字符按字面意思表示,因此,在您的情况下, scanf 字符串"%d a %f"将匹配"233 a 4.5"但不会匹配"233 b 4.5"

(更准确地说,空白字符匹配任何连续的空白字符序列。)

于 2013-03-07T05:38:22.943 回答
1
scanf("%d a %f",&i,&f)

意味着您必须输入数据,格式为 25 a 33.3

然后当你使用打印它时

printf("i=%d f=%f",i,f);

然后你得到输出

i = 25 , f = 33.3
于 2013-03-07T05:46:55.147 回答
1

f由于&行中的,您没有获得变量的值scanf("%d a %f",&i,&f)

&意味着您正在获取f内存中变量的地址。您应该删除 '&以获得变量的实际值。

对于一个:

  • 非空白字符,格式说明符 (%) 除外:任何不是空白字符(空格、换行符或制表符)或格式说明符的一部分(以 % 字符开头)的字符都会导致函数读取下一个字符从流中,将其与此非空白字符进行比较,如果匹配,则将其丢弃,函数继续使用格式的下一个字符。如果字符不匹配,则函数失败,返回流的后续字符并将其保留为未读。

这意味着您正在将输入格式化为:

  1. 输入一个十进制整数(%d)
  2. 然后是一个空格
  3. 然后是字符'a'
  4. 另一个空间
  5. 然后是浮点数(%f)。

参考:http ://www.cplusplus.com/reference/cstdio/scanf/

于 2013-03-07T06:09:01.053 回答