混合类型数据格式化输入

来源:互联网 发布:淘宝质量好的女鞋店 编辑:程序博客网 时间:2024/05/12 14:14
题目:
 输入格式:
输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。
输出格式:
在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。
输入样例:
2.12 88 c 4.7
输出样例:
c 88 2.12 4.70
我写的代码:
```
 #include<stdio.h>
int main()
{
  char a;
  int b;
  float c,d;
  scanf("%f%d%c%f",&c,&b,&a,&d);
  printf("%c %d %.2f %.2f\n",a,b,c,d);
  return 0;
}

```
在scanf()函数里%f%d%c%f之间没有空格,运行后出现这样的结果:
2.12 88 c 4.7    -------->这是输入
  88 2.12 0.00

--------------------------------
Process exited with return value 0
Press any key to continue . . .


如果把scanf()函数改成这样scanf("%f%d%c%f",&c,&b,&a,&d);  _即%f  %d %c %f,
(每个转换字符后面有空格)
则没有问题,编译通过。为什么呢。。。。
刚刚看了一下k&r对%c的说明:
c    字符;char *类型,将接下来的多个输入字符(默认为一个字符)存放到指定位置。该转换规范通常不跳过空白符。如果需要读入下一个非空白符,可以使用%ls。
然而。。。看不太懂,有哪位大神来解释一下~
0 0
原创粉丝点击