如何查看输入的值是否为数字而不是字符?
我想知道是否有人输入了一个号码,如果他们这样做,程序会继续,但如果他们没有,程序就会终止.
int main(void) { int i; printf("Enter a number: "); scanf("%d",&i); /*If input is not a number than terminate*/ /*Otherwise continue*/ else { if (test_prime(i)) printf("Prime.n"); else printf("Not prime.n"); } return 0; } 如果用户输入“hello”而不是我希望程序终止. 解决方法
那么正确的做法就是这样
int main(void) { int i; printf("Enter a number: "); if( scanf("%d",&i) != 1){ fprintf(stderr,"%sn","Error in input,input is not number"); exit(1); } /*input is a number */ if (test_prime(i)) printf("%sn","Prime."); else printf("%sn","Not prime."); return 0; } 检查scanf的返回值将帮助我们了解scanf调用是否成功. 或者,您可以使用fgets()获取行输入,然后解析它并检查strtol等函数. 为了让您了解为什么isdigit解决方案不起作用,从7.4.1.5标准我们可以看到引用
十进制数字符是0,1 … 9. 提供的解决方案说明: 如果你查看它所说的函数的返回值
这是正在检查的内容.这也适用于多位数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |