in 'C' 如何 - 检查用户输入的 int,如果字母、字符或空格会重新提示用户?



它必须是一个不超过23大于23的非阴性INT。我有

int main(void){
int rows;

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

然后idk为对方做什么。

是无效的吗?orrrr什么大声笑我将如何实现

通过初始化 rows避免不确定的行为(如果您不幸的话,它的不确定的初始垃圾值可能为18)....

使用getline(3)或fgets(3)。

读取整个行。

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

请参阅此并回答。

或至少,使用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;
}

相关内容

最新更新