【发布时间】:2015-08-28 21:16:07
【问题描述】:
您好,我正在尝试编写 C 代码,提示用户输入一个正整数,然后打印出该数字的位数。假设用户输入一个正整数,则不需要进行错误检查。
我的问题是按下'ctrl-d'后输出总是:
"位数 = 1"
如果用户键入 1023,程序应该打印:
"位数 = 4"
我是 C 新手,正在尝试了解 scanf 的工作原理。谢谢!
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int count = 0;
char n;
printf("Enter positive int!\n");
while(scanf("%c",&n) != EOF);
{
count++;
}
printf("# of digits = %d\n", count);
return 0;
}
【问题讨论】:
-
去掉
while后面的分号。提示:将大括号与while/if等放在同一行。 -
%cinscanf将计算用户在数字后输入的换行符。 -
请不要默默地编辑代码中的真正错误。这完全改变了它的内容。
-
scanf阻止,直到您以 enter 或 Ctrl+D 结束 -
明白,感谢您对无声编辑感到抱歉。