2012-01-25 24 views
0

我想通過按'Enter'鍵而不是任何字母鍵來結束while循環。我無法弄清楚我該怎麼做。 我已經這樣做了,如果輸入不是數字,它將退出,但我希望輸入是'Enter'鍵。如何通過按'Enter'鍵而不是任何字母鍵來結束while循環?

void main (void) 
      { 
       float f; 
       float total=0.0; 
       printf("Enter numbers to be add: "); 
       while (scanf("%f",&f)==1) 
        { 
         total=total+f; 
         printf("Enter another # to be add: "); 
             scanf("%1.0f",&f); 
        } 
       printf("Addition Total = %1.0f",total); 
      } 
+0

學習格式化你的代碼 – tekknolagi

+0

對不起,現在我做到了。 – AbdulAziz

+0

你使用的是什麼確切的編譯器? –

回答

1

使用你的框架你應該讀一個字符串,然後檢查它是否爲空。如果字符串爲空,則可以結束執行。如果字符串不是空白,則應掃描字符串。

使用sscanf(http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/)在您驗證它不是空白後讀取字符串。

+0

對不起,我的問題是非常基本的編程相關,我想通過按'Enter'鍵而不是任何字母鍵來結束循環。正如我在此期間所做的那樣(scanf(「%f」,&f)== 1) – AbdulAziz

+0

只是「結束」一個程序很困難。在這種情況下,一個空白輸入,例如「按下回車鍵」,只會留下一行新的白色字符「\ n」或「\ r \ n」(也許是Windows)。當你的程序遇到這種特殊的組合時,你將結束你的循環,程序將運行到完成。與scanf不同的是,我們首先檢查輸入字符串,並且只有當它的好(而不是停止命令)我們將該字母表示轉換爲數字。 – Mikhail

1

您可以使用fgetssscanf代替:

char buffer[100]; 
while (fgets(buffer, sizeof(buffer), stdin)) 
{ 
    /* On DOS/Windows an empty line might be 2 characters ("\r\n") */ 
    if (strlen(buffer) == 1) 
     break; /* Only newline in buffer */ 

    if (sscanf(buffer, "%f", &f) == 1) 
    { 
     total += f; 
     printf("Enter another number: "); 
    } 
} 
1

嘗試使用殘培

c = null 
while(c != 0x0D) 
{ 
    c = getch(); 
} 

More info