gpt4 book ai didi

c - 为什么 Scanf 在获取角色时工作很奇怪

转载 作者:行者123 更新时间:2023-12-01 23:42:53 25 4
gpt4 key购买 nike

程序说明:- 我编写了一个程序,它从用户无限号处获取字符输入。次数并打印输入的输入。这是程序

#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

我的问题:-究竟发生了什么?我很想知道这个问题。有人能详细解释一下吗。我在网上冲浪,但没有找到任何关于此类问题的解释!!

最佳答案

当您按 Enter 键输入字符时,您将在缓冲区中留下一个换行符 \n 字符。在每隔一次迭代时 scanf 都会读取该换行符。

"%c" %c 之前的空格将占用包括换行符在内的空白。如果有的话。

关于c - 为什么 Scanf 在获取角色时工作很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26547850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com