0

我正在用 C. 编写一个程序来跟踪仓库中的物品。

我想强制用户至少包含一个数字!例如 dvd1、dvd2。你好1,你好20

有没有办法做到这一点?目前我正在使用scanf。

我希望产品代码具有 xx-xxx-xxx 的要求格式,x 是数字。

我正在使用 scanf ( %[0-9-]s

安东!

4

2 回答 2

1

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);

于 2013-10-28T18:24:11.903 回答
0

阅读输入,您可以像在This SO question中那样进行迭代。从那时起,您可以很容易地检查是否chars匹配您想要的输入。

于 2013-10-28T18:25:25.557 回答