2012-01-25 1 views
0

Я хочу закончить цикл 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

Прошу прощения, мой вопрос - это очень основное программирование, связанное с тем, что я хочу закончить цикл while, нажав клавишу «Enter», а не любую буквенную клавишу. как я сделал inwhile (scanf («% f», & f) == 1) – AbdulAziz

+0

Трудно просто «закончить» программу. В этом случае пустой ввод, такой как «нажатие клавиши ввода», оставит только новую строку белого символа «\ n» или «\ r \ n» (может быть, Windows). Когда ваша программа встретит эту специальную комбинацию, вы закончите цикл, и программа запустится до завершения. В отличие от scanf, мы сначала проверяем входную строку, и только если ее хорошая (не стоп-команда), мы преобразуем это письмо в число. – Mikhail

1

Вы можете использовать fgets и sscanf вместо:

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

Смежные вопросы