我使用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