Sus*_*mar 2 c whitespace while-loop
程序说明: - 我编写了一个程序,该程序从用户输入无限的字符输入.时间并打印输入的输入.这是程序
#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++;
}
}
Run Code Online (Sandbox Code Playgroud)
上述方案的产出: -
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
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,该程序正在跳过偶数编号的循环,它仅适用于奇数个"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++;
}
}
Run Code Online (Sandbox Code Playgroud)
我没有区别,但我在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
Run Code Online (Sandbox Code Playgroud)
我的问题: - 究竟发生了什么?我非常渴望知道这个问题.有些人可以详细解释我.我浏览了互联网,但我没有找到任何关于这类问题的解释!
您将\n在缓冲区中留下换行符,然后按Enter键输入一个字符.在每次其他迭代中,scanf读取该换行符.
" %c"%c之前的空格将占用包括换行符在内的空格.如果有的话.