十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
可以通过scanf来控制输入格式,当scanf返回值不正确时,即为输入格式错误,这时清除输入缓冲,并提示重新输入。
创新互联公司长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为光明企业提供专业的网站建设、网站设计,光明网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
scanf为C语言格式化输入函数,第一个参数为格式化字符串,可以用来确定输入格式。其返回值为正确输入的变量总数,当格式错误时,输入就会产生错误,返回值自然会不正确。于是通过判断返回值,可以知道是否有格式错误出现。
参考代码如下:
int a,b;
int ret;
//循环输入a,b值。如果格式错误,重新输入。如果得到正确值,终止输入。
while(1)
{
ret = scanf("%d,%d", a,b); //必须以逗号分隔。
if(ret != 2)//格式错误。
{
fflush(stdin);//清除输入缓冲,抛弃非法字符。
printf("输入格式错误,请重新输入。\n");//提示重新输入。
}
else
break;//输入正确,退出循环。
}
scanf函数输入完成需要一个回车,getchar接收的是一个字符。
要么就是你输入的内容放入字符串中然后逐个比较。
要么你可以getchar每一个字符,然后转化成ascii码,通过判定数值区间来判定输入的字符是否为数字。
可以使用清理输入流fflush(stdin);这个原因是因为错误输入的内容会保留在输入流,下一次判断会从输入流开始读取,因为错误输入的内容还在,所以直接判断错误,继续循环。
但有些编译器并不支持清理输入流。所以我们这时需要用手动输入让其清除。使用getchar();让其接收错误的字符。但这样就会变成这样,如果输入多个错误就会出现多个次数的循环;直至没有错误输入;这样如果循环内容多,所消耗的资源也就多了。
所以可以使用while()来执行里面的消除字符,但如果直接这样while(getchar())就会进入无限循环,所以可以让其接收一个终止条件,每次输入完都会按回车,那就让其接收'\n'换行符终止自己的循环。
扩展资料
C语言从键盘输入数据
程序是人机交互的媒介,有输出必然也有输入。在C语言中,有多个函数可以从键盘获得用户输入:
scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。
getchar()、getche()、getch():这三个函数都用于输入单个字符。
gets():获取一行数据,并作为字符串处理。
scanf() 是最灵活、最复杂、最常用的输入函数,但它不能完全取代其他函数,大家都要有所了解。scanf 是 scan format 的缩写,意思是格式化扫描,也就是从键盘获得用户输入。
gets() 会读取用户输入的整行内容,包括空格。而 scanf() 遇到空格就结束读取,也就是说,使用 scanf() 读取的字符串中永远不会包含空格。