我想知道如何检测是否输入了前导零与否。
scanf("%d", &d);
这将只是改变07〜7等。
最后,我想回到(1)如果输入得到了前导零和返回(0),如果输入的是确定的。
谢谢。
我想知道如何检测是否输入了前导零与否。
scanf("%d", &d);
这将只是改变07〜7等。
最后,我想回到(1)如果输入得到了前导零和返回(0),如果输入的是确定的。
谢谢。
如果你想知道,如果一些有你要读它作为一个字符串,并让自己的验证前导零。 字符串07
只是表象,如果因为它保存为只是一个整数存储7
。
要验证您已经阅读了字符串带前导零的整数,你可以先用strtol
检查它确实是一个有效的整数。 然后,只需检查字符串中的第一个字符是'0'
。
一个取巧的办法:
int d;
char s1[1000], s2[1000]; //maybe lower
scanf("%s", s1);
d = strtol(s1, NULL, 10);
sprintf(s2, "%d", d);
if (strcmp(s1, s2) == 0) return 0; else return 1;
如果你坚持,你可以用它读"0%d"
第一,如果失败( scanf()
返回参数较少比预期的),以再次读取%d
。
但我不明白你为什么会喜欢这并测试读取整个字符串......(所以没必要只downvote这一个这是一个无用的和哈克的方式)
#include <stdio.h>
int main(){
int x ,r ;
r=scanf("0%d",&x);
printf("%d ret=%d\n",x,r);
r=scanf("%d",&x);
printf("%d ret=%d\n",x,r);
return 0;
}
编译它,并运行它echo "74" | ./a.out
echo "74" | ./a.out
和echo "074" | ./a.out
echo "074" | ./a.out
分别。