【发布时间】:2018-02-01 19:13:12
【问题描述】:
我正在尝试使用以下代码读取用户整数输入。我知道 strtol 返回一个长值。
long color = 1;
char buf[256];
char * last;
while(color != 0){
printf("Enter a color (0 to stop): ");
fgets(buf, 256, stdin);
color = strtol(buf, &last, 10);
if(last != '\0'){
printf("You didn't enter a number.\n");
}
else{
printf("%d\n", color);
}
}
我尝试运行它,首先输入 4,这给了我You didn't enter a number. 我再次尝试使用“四十”并得到相同的结果。我在这里想念什么?我想要做的就是获得一个整数值的基本用户输入,验证只输入了一个整数。我不需要很长,因为这些值都在 3000 到 4000 之间。
【问题讨论】:
-
last是一个指针,但你将它与\0比较,即int。你没有收到任何警告吗? -
不,我得到的唯一警告是未使用的变量,它们是其他东西的一部分。
标签: c user-input fgets strtol