在'C'我如何 - 检查int的用户输入,如果字母,字符或空格重新用户?

时间:2014-01-19 19:53:24

标签: c null user-input scanf boolean-expression

它必须是一个非负的int不大于23 ....没有空白条目或其他条目,如果是这样它再次重新提供用户 我有

int main(void){
int rows;


while (rows < 1 || rows > 23)
{
printf("Height:");
scanf("%d", &rows);
}

然后idk为另一个做什么。

是NULL吗? orrrr是什么哈哈 我将如何实现

1 个答案:

答案 0 :(得分:1)

通过初始化rows来避免undefined behavior(如果您运气不好,其未定义的初始垃圾值可能为18)....

使用getline(3)fgets(3)读取整行。

然后使用sscanf(3)解析该行(考虑sscanf的结果,并可能使用%n)或使用strtol(3)(例如long n=strtol(p,0,&end);后声明char *end=NULL;

请参阅thisthat个答案。

或至少使用scanf之类的结果

int rows = 0;
while(1) {
 puts("number of rows?");
 fflush(stdout);
 int nbscan = scanf("%d", &rows);
 if (nbscan<=0) continue;
 if (rows < 1 || rows>20) continue;
 if (feof(stdin)) break;
}