gpt4 book ai didi

c - C中的输入数据验证

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:53 27 4
gpt4 key购买 nike

该函数用于验证输入。它会提示用户输入一个数值(大于或等于 0 ),直到它满足条件。如果在数字之前或之后输入任何字符,则输入将被视为无效。所需的输出为:

Enter a positive numeric number: -500
Error! Please enter a positive number:45abc
Error! Please enter a number:abc45
Error! Please enter a number:abc45abc
Error! Please enter a number:1800

嗯,这看起来很简单:

#include <stdio.h>
main() {
int ret=0;
double num;
printf("Enter a positive number:");
ret = scanf("%.2lf",&num);

while (num <0 ) {
if (ret!=1){
while(getchar()!= '\n');
printf("Error!Please enter a number:");
}
else{
printf("Error!Please enter a positive number:");
}
ret = scanf("%.2lf",&num);
}
}

但是,无论输入类型如何,我的代码都会输出Error!Please enter a number:。有什么建议吗?

最佳答案

精度修饰符在 scanf 中无效.您可以通过启用所有编译器警告(gcc 中的 -Wall)轻松验证这一点。这样做的原因是实际输入实际值的方法不止一种,例如,您可以使用 0.22e-1

如果您只需要 2 位数字,只需使用 scanf("%lf",&num) 然后将数字四舍五入。请注意,精度修饰符适用于 printf :

#include <stdio.h>

int main() {
int ret = 0;
double num = -1;
printf("Enter a positive number:");
ret = scanf("%lf",&num);

while (num < 0 ) {
if (ret != 1){
while(getchar() != '\n');
printf("Error! Please enter a number: ");
}
else{
printf("Error! Please enter a positive number: ");
}
ret = scanf("%lf",&num);
}
printf("Your number is %.2lf",num);
return 0;
}

关于c - C中的输入数据验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11277641/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com