簡體   English   中英

getch()和scanf()函數之間的區別

[英]Difference between getch() and scanf() functions

執行以下代碼時遇到困難。 完成一次執行后,變量“ t”取空值。 通過使用getch()而不是scanf()解決了該問題。 但是我不知道為什么會這樣。 有什么解釋嗎? 這是沒有用的程序。

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
char t;
void main()
{
    while(1)
    {
        scanf("%c",&t);
        printf("\nValue of t = %c",t);
        printf("\nContinue (Y/N):");
        char a=getche();
        if(a=='n' || a=='N')
        exit(0);
   }
}

現在,這是正確執行的程序。

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
char t;
void main()
{
    while(1)
    {
         t=getch();
         printf("\nValue of t = %c",t);
         printf("\nContinue (Y/N):");
         char a=getche();
         if(a=='n' || a=='N')
         exit(0);
    }
}

當你讀一個字符時,

scanf("%c",&t);

在輸入流中留下了一個換行符,導致后面的scanf()跳過循環中的輸入。

請注意, getch()是非標准函數。 您可以改用getchar()

或將其更改為:

scanf(" %c",&t); 

注意格式說明符中的空格,該空格可確保在讀取%c的字符之前scanf()跳過了所有空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM