我使用C玩,写了这个代码:得到()函数从第二次起跳过
1 #include<stdio.h>
2 #define ASK_PROMPT printf("\nDo you want to continue(Y/N):");
3 main()
4 {
5 char main[20], i;
6 start:
7 printf("Please enter your string:\n");
8 gets(main);
9 printf("\nstring entered was:\n \n%s\n", main);
10 ASK_PROMPT;
11 scanf("%c",&i);
12
13 if(i=='Y'||i=='y')
14 goto start;
15 getch();
16 return;
17 }
当我执行这个代码
,该goto loop
无法正常工作。在提供y
或Y
对第10行问题的回答时,循环确实起作用,并且第7行再次执行/打印,但第8行被跳过(不等待输入提供)。
- 任何人都可以解释它为什么会发生?
- 我该如何解决?
此代码应该是**不**的典型例子。 – Haris
这几乎是你为了输入“Y”或“Y”而击中多个键。但是,这将是非常明显的,所以你必须已经排除了在调试中的可能性... – EOF
意味着,不应该使用goto?我通常不使用转到。但我想问的是为什么它不要求输入。程序是否忘记main已经被声明了? (请不要介意“主”作为另一件事,我试图) – user2507780