我正在用 C. 编写一个程序来跟踪仓库中的物品。
我想强制用户至少包含一个数字!例如 dvd1、dvd2。你好1,你好20
有没有办法做到这一点?目前我正在使用scanf。
我希望产品代码具有 xx-xxx-xxx 的要求格式,x 是数字。
我正在使用 scanf ( %[0-9-]s
安东!
我正在用 C. 编写一个程序来跟踪仓库中的物品。
我想强制用户至少包含一个数字!例如 dvd1、dvd2。你好1,你好20
有没有办法做到这一点?目前我正在使用scanf。
我希望产品代码具有 xx-xxx-xxx 的要求格式,x 是数字。
我正在使用 scanf ( %[0-9-]s
安东!
scanf 不是那样工作的,它没有深入的验证。
您需要将输入读入 char 数组,然后遍历每个字符并查看它是否为数字。
像这样的东西(未经测试):
char buffer[1000];
int i = 0, hasDigit = 0;
scanf("%s", buffer);
while (i < sizeof(buffer) && buffer[i] != 0 && !hasDigit)
{
hasDigit = isdigit(buffer[i]);
i++;
}
// if hasDigit is 0, there are no digits
注意:scanf 不是很好,因为如果输入的字符数超过缓冲区的容量,可能会导致缓冲区溢出。最好使用 fgets(buffer, sizeof(buffer), stdin);
阅读输入,您可以像在This SO question中那样进行迭代。从那时起,您可以很容易地检查是否chars
匹配您想要的输入。