我有此代码来验证用户输入。条件:输入的值只能是零或正数。不接受负值和字母字符。
这是我的代码,它一直在循环:
#include <stdio.h>
int main ()
{
int a, b, c, d;
printf ("enter value for a:");
do {
b = 0;
scanf ("%d", &a);
if (!isdigit(a)) {
printf("Number must be numeric!:\n");
b++;
}
else if (a < 0) {
printf ("number must be postive\n");
b++;
} else {
printf("\neverything is goood\n");
}
} while (b != 0);
}
以下是我可以发现的代码的一些问题:
也就是说,下面是一些可能适合您的代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
static void skip_input(FILE *stream)
{
int c;
do {
c = fgetc (stream);
} while (c != EOF && c != '\n');
}
int main()
{
int a;
int r;
printf("Please enter a value: ");
for (;;) {
r = scanf("%d", &a);
if (r == EOF)
return EXIT_FAILURE;
if (r != 1) {
printf("Number must be numeric!\n");
skip_input(stdin);
} else if (a < 0) {
printf("Number must be postive\n");
skip_input(stdin);
} else {
printf("Everything is goood\n");
break;
}
}
return EXIT_SUCCESS;
}
希望有帮助。
一旦用户出错,b总是
isdigit()
期望一个ASCII编码的字符,但是scanf
带有%d
参数正在将ASCII编码的数字(字符串)转换为实际数字。
也就是说,如果输入ASCII码为0x31的“1”,则scanf(“%d”)将把它转换为值。ASCII码为1不是数字。
要解决此问题,请执行以下操作之一:
a
键入char
并使用scanf格式说明符%c
,然后isdigit()
将执行您想要的操作
此外,您应该打开编译器警告并包含包含
isdigit()
函数的头文件,ctype. h
。
此特定环境下的程序:EJB3.0 JPA jersey Web Service 第一个实体: 第二实体: 当我拿到班级考试的学生名单时。例外情况是: 如果我更改fetch FetchType。懒惰例外情况是: 如何解决我的问题?
这似乎是一个永无止境的故事,但我无法从Twitter4J流API访问Twitter。 > 我创建了一个Twitter帐户,并将时区更改为我的祖国 我在Twitter上创建了一个App 我创建了一个ClientApp在Java /Maven与Twitter4J流API 4.0.0 我在配置生成器中放置了Api-Key、秘密密钥和访问令牌 我从推特上得到一个例外 401:身份验证凭据(https://
如果给定值是一个数字,则返回 true ,否则返回false 。 使用 !isNaN() 和 parseFloat() 来检查参数是否是一个数字。使用 isFinite() 来检查数字是否是有限数。使用 Number() 来检查强制转换是否成立。 const validateNumber = n => !isNaN(parseFloat(n)) && isFinite(n) && Number(n
我正在制作一个基于文本的冒险游戏,我需要进行一些用户输入验证 我已经为这个特定实例设置了循环,但在输入正确的输入后,我似乎无法使循环中断。 代码: 我的输出是这样的: 你的选择是敲打还是猛击。别那么粗鲁。 大满贯 你猛地撞上沉重的橡木门,沉重的铁铰链砰的一声让位了。当你凝视城堡的第一个房间时,灰尘落在你的头上。大厅大约有五十英尺长。西墙有三扇门,东墙有两扇门。空气中弥漫着霉菌、湿气和铁的味道。曾经
我试图验证一个逗号分隔的数字列表1-384唯一(不重复)。 即。 1, 2, 3, 5, 6, 7, 9有效 1-3, 5-7, 9有效 2,2,6无效 2,无效 1, 2, 3, 4, 15, 6, 7, 385无效,因为最后一个数字大于384 我尝试了以下RegEx模式,但还不够:
我有字节数组格式的公钥。在我的数据库里。像这样 在此处输入图像描述 总是suc=false。我确信bytetoverify的值与方法符号中的输入值相同。 我不知道我用这种方式生成公钥是问题还是符号有问题。在符号方法中,我使用sh1和pkcs1,但在验证中,我只找到sh1。 每个人都能帮我吗?