求正整数的行数(输入文字列时出错)

输入大于等于1小于等于10000000的数时输出位数;
输入小于1的数时输出Input Error: 0 or less;
输入大于10000000的数时输出Input Error : 10000001 or more;
输入文字列时输出Input Error: not number。
努力了很久只能写成这样了。
输入数字时可以正常运行,但是输入文字列时结果会莫名其妙跟上数字,求问是哪里出了问题,谢谢。

img

scanf中的%d只接受整数。文字还得用%c或者%s输入