帮忙解一个程序

来源:百度知道 编辑:UC知道 时间:2024/06/02 10:37:56
为什么 %2d 改成 %d 或 %3d就无输出呢
#include <stdio.h>
main ( )
{int a;float b;
scanf("%2d %f\n",&a,&b);
printf("%d %f\n",a,b);
}
是scanf括号里的%2d,为什么不能改呢

C 语言中 scanf()的用法探讨 C 语言中 scanf()的用法探讨
scanf()作为 C 语言中的基本输入,曾经带给我们初次编写 C 程序的快乐。但是随着
C 的不断深入,我们却发现:原来最难理解的东西居然是我们自以为很熟悉的东西。
我们真正了解 scanf()吗?那么看看下面的几个例子吧。
一、关于 scanf()中的格式控制符
scanf()的格式控制符有多个,但我只想讨论一下%[]这个格式控制符。%[]可以用来进
行多个字符的输入,并对结束符进行自定义。
ANSI C 标准向 scanf() 增加了一种新特性,称为扫描集(scanset)。 扫描集定义一
个字符集合,可由 scanf() 读入其中允许的字符并赋给对应字符数组。 扫描集合由一对
方括号中的一串字符定义,左方括号前必须缀以百分号。 例如,以下的扫描集使 scanf()
读入字符 A、B 和 C:
%[ABC]
使用扫描集时,scanf() 连续吃进集合中的字符并放入对应的字符数组,直到发现不在集
合中的字符为止(即扫描集仅读匹配的字符)。返回时,数组中放置以 null 结尾、由读入
字符组成的字符串。
对于许多实现来说,用连字符可以说明一个范围。 例如,以下扫描集使 scanf() 接受字
母 A 到 Z:%[A-Z] 重要的是要注意扫描集是区分大小写的。因此,希望扫描大、小写
字符时,应该分别说明大、小写字母。
对于%[]还可以用^+任意字符(包括 eof)来结束字符串的输入。比如%[^EOF]就是直到有
EOF 输入,字符串才中止。
但一定要记住就是 c 语言是缓冲输入,即使你%[^a],再你输入回车之前输入多少的 a 都是
不可能结束的。
如下面的一段程序:
#include<stdio.h>
int main()
{
char stri