验证以阻止输入字符和最多50个数字字符

时间:2013-12-17 04:34:25

标签: c validation

我希望能够阻止用户在结构的.data部分输入任何非数字字符。他们还可以输入最多50个数字字符,但不能再输入。我已经提出了这个循环,但它不起作用。我是C的新手,所以我没有大量的东西值得尝试。

do{
    puts("Enter up to 50 numerical characters");
    scanf("%50s", &records[*rCount].data);
    for(i = 0; i < records[*rCount].data; i++)
    {
        if(!isdigit(records[*rCount].data[i]))
        {
            valid = 0;
            getchar();
            puts("\nNot a valid input");
            break;
        }
        else
        {
            valid = 1;
        }
    }

} while(valid!=1);

1 个答案:

答案 0 :(得分:0)

  1. 始终测试scanf()

    的结果
    if (scanf("%50s", &records[*rCount].data) != 1) {
      valid = 0;
      getchar();
      puts("\nNot a valid input");
      continue;
    }
    
  2. records[*rCount].data[i] == '\0'

    上终止你的循环
    for(i = 0; records[*rCount].data[i] != '\0'; i++)
    
  3. 可以使用if (scanf(" %50[0-9]", &records[*rCount].data) != 1)并跳过for循环。