【发布时间】:2014-10-24 12:26:47
【问题描述】:
程序说明:- 我编写了一个程序,它从用户无限号中获取字符输入。次并打印输入的输入。这是程序
#include<stdio.h>
int main()
{
int i=1;
char a;
while (i!=0)
{
printf("Enter %d th value\n",i);
scanf("%c",&a);
printf("Entered input is %c\n",a);
i++;
}
}
上述程序的输出:-
Enter 1 th value
q
Entered input is q
Enter 2 th value
Entered input is
Enter 3 th value
r
Entered input is r
Enter 4 th value
Entered input is
Enter 5 th value
g
Entered input is g
Enter 6 th value
Entered input is
Enter 7 th value
如您所见,该程序正在跳过偶数循环,它仅适用于奇数个“i”值。
我做了什么:-
我在网上搜索了一整天,最后我发现我们必须在scanf中的%c之前插入空格。这是更新的程序。
#include<stdio.h>
int main()
{
int i=1;
char a;
while (i!=0)
{
printf("Enter %d th value\n",i);
scanf(" %c",&a); //changed lineeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
printf("Entered input is %c\n",a);
i++;
}
}
我没有区别,但我在 scanf 的 %c 之前添加了空格。现在它工作正常。这是输出:-
Enter 1 th value
q
Entered input is q
Enter 2 th value
w
Entered input is w
Enter 3 th value
e
Entered input is e
Enter 4 th value
r
Entered input is r
Enter 5 th value
我的问题:- 究竟发生了什么?我很想知道这个问题。谁能详细解释一下。我上网了,但没有找到任何关于这种问题的解释!
【问题讨论】:
-
阅读仔细scanf(3)。您应该测试它的返回值(成功读取项目的计数)。
标签: c while-loop whitespace