c语言在 电脑上用scanf输入001,为啥printf输出显示是1,怎么把输出显示也变成001?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言在 电脑上用scanf输入001,为啥printf输出显示是1,怎么把输出显示也变成001?相关的知识,希望对你有一定的参考价值。
scanf函数默认将输入的数字字符转换成对应的整数,即忽略前导的零。因此如果要保留前导零,需要对其进行格式化输出。可以使用printf函数的格式控制字符串,指定输出的数字位数和前导零即可,如下所示:
int num;
scanf("%d", &num);
printf("%03d", num); // 输出3位数字,若不足3位,在前面补0
这样就可以输出001了。 参考技术A 无论scanf还是printf,如果使用整型数据类型都会忽略掉前导的0.
因此,最简单的办法就是用string类型保存输入数据
char a[100];
scanf("%s", a);
printf("%s", a);
c语言将字符输入至数组为啥不执行呢
这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。由于前面的输入语句(不一定是scanf)把最后输入的'\n'遗留在了输入缓冲区,而当前的scanf("%c",...);又会把'\n'当一个字符接收,又由于scanf在%c控制下只接收一个字符,所以就不能接收正式输入的字符了。解决这一问题的最简单办法是在接收字符的scanf的控制符"%c"中的%前加一个空格写成" %c",把前一次输入遗留在输入缓冲区里的所有广义空格(' '、'\t'、'\n'等)都吸收掉。在接收字符的scanf前加getchar()等的办法其实是有漏洞的——当缓冲区里只遗留了一个广义字符时可正常工作,若多于一个则同样出错。 参考技术A 因为在scanf("%d",&a);读取a的值以后,数字被读走了,但是输入的回车符还留在键盘缓冲区中。等到下一次读取字符或字符串时,就会读到这个残留的回车符。解决的办法是读走这个字符或清空键盘缓冲区(使用fflush(stdin);)本回答被提问者采纳以上是关于c语言在 电脑上用scanf输入001,为啥printf输出显示是1,怎么把输出显示也变成001?的主要内容,如果未能解决你的问题,请参考以下文章
在C语言中scanf能作为用户标示符么?为啥?scanf不是关键词么?
c语言 scanf("%d",&a);输入字符为啥会进入死循环?
最近在自学C语言,用的VS2019,为啥照抄结果还报错?请指教。。。。