我希望能够阻止用户在结构的.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);
答案 0 :(得分:0)
始终测试scanf()
if (scanf("%50s", &records[*rCount].data) != 1) {
valid = 0;
getchar();
puts("\nNot a valid input");
continue;
}
在records[*rCount].data[i] == '\0'
for(i = 0; records[*rCount].data[i] != '\0'; i++)
可以使用if (scanf(" %50[0-9]", &records[*rCount].data) != 1)
并跳过for循环。