C语言中怎么实现要求输入的数据按格式来?

来源:百度知道 编辑:UC知道 时间:2024/06/17 19:30:22
比如要求输入的数据必须有一位小数位,如必须输入2.0,34.0,这样的,怎么用scanf语句实现?
scanf("%lf%lf%lf",&a,&b,&c);我是这样编的,但不管怎么输入,最后执行出来的结果都是对的,想达到控制输入数据的格式,有一位小数的才有效这种效果
一楼的同学,谢谢你,我之前有试过这样编,但运行的时候出来的结果是很长串的数据也……不是想要的结果。比如我想要输入2.0 2.0 3.0这几个数据
我最开始的程序是这样的
#include <stdio.h>
void main()
{double a,b,c,s,v;
printf("input a,b,c:");
scanf("%lf%lf%lf",&a,&b,&c);
s=a*b;
v=a*b*c;
printf("a=%f,b=%f,c=%f\n",a,b,c);
printf("s=%f,v=%f\n",s,v);
}

可以用scanf来执行输入,在第一个参数格式化字符串中指定输入的格式,当输入的实际格式与要求不符时,输入会出错,导致返回值异常,从而确定输入格式非法,提示用户重新输入。

scanf的返回值是实际写入数据的变量的个数,当返回值与需要写入的变量个数不符时,即可知道输入格式非法。

以输入两个整型变量,以逗号分隔为例,代码如下:

int a,b;
while(scanf("%d,%d",&a,&b)!= 2)//判断输入函数返回值,不为2时表示输入格式错误。
{
    printf("输入格式不正确,请输入两个整数并以逗号分隔\n");//提示重新输入。
    fflash(stdin);//清除当前输入缓冲。这个操作是必须的,否则不符合需求的输入数据将一直存在缓冲区中,影响后续的输入,导致死循环。
}

你可以scanf("%.1f",&a);
需要这位就.几

还要对齐的时候,也经常用%6d,之类。

楼主可以细看一下

就是%.1lf