用c语言处理非数字字符的方

如何判断输入的是不是数字?不是数字就输出异常提示并终止,数字可以是多位数,并且同时输入多个数字,用字符0到9判断好像是不行的,不能同时输入吧,要么就只能输入个位数,大佬帮帮忙

<- 问题如果解决,请点此处的采纳和向上的箭头

int r = 0;
while (true)
{
char ch = getchar();
if (ch < '0' || ch > '9') break;
r = r * 10 + (ch - '0');
}
printf("%d", r);