我尝试过
#define BUF_SIZE 256
char msg[BUF_SIZE];
printf("input? ");
while (fgets(msg,BUF_SIZE,stdin)!=NULL){
char *next;
int input = strol(msg, &next,10); //use strol
if ((end == msg) || (*end == '\0')){ //check validity here
printf("invalid\n");
printf("try again\n"); //type anther value
else{
printf("valid\n");
}
我的代码有什么问题?
那是检查整数输入的正确方法吗?
答案 0 :(得分:0)
错误的测试和函数名称
// if ((end == msg) || (*end == '\0')){ //check validity here
if ((end == msg) || (*end !== '\0')){ //check validity here
printf("invalid\n");
更好地分配给long
还是根本不分配
// int input = strol(msg, &next,10);
long input = strtol(msg, &next,10);
or
strtol(msg, &next,10);
使用errno
也是要检查是否溢出。
errno = 0;
strtol(msg, &next,10);
if (errno == ERANGE) {
puts("Overflow");
} else
...