vja*_*n27 5 c scanf
我想知道当字符本身只是一个数字时,标准C库函数scanf()检查输入是整数还是字符时我们调用scanf("%d",&var)?我知道当它遇到一个非整数时,它会把它放回输入缓冲区并返回-1但是它怎么知道输入不是整数?
pou*_*def 4
你是对的,每个字符实际上都表示为 8 位整数。解决方案很简单:查看该数字,看看它是否在 48-57 范围内,这是字符“0”-“9”的 SCII 代码范围。
scanf() 从源代码的第 1315 行开始,我们可以看到它的实际效果。scanf()但实际上更复杂 - 它还查看多字节字符来确定数值。第 1740 行是奇迹发生的地方,该字符实际上被转换为数字。最后,这可能是最有用的,该strtol()函数通过循环来执行该转换。
scanf()
strtol()
归档时间:
15 年 前
查看次数:
18616 次
最近记录:
10 年,4 月 前