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

如何判断输入的是不是数字?不是数字就输出异常提示并终止,数字可以是多位数,并且同时输入多个数字

while (true)
{
char ch = getchar();
if (ch < '0' || ch > '9') break;
}

int tmp = 0;
int len = sscanf(str,"%d", &tmp);
if(len != 1){
printf(“not a number”);
}