2013-04-17 6 views
3

У меня возникли проблемы с запросом подтверждения перед закрытием программы на C. Я ищу программу, чтобы инициировать цикл завершения подтверждения, когда введено 0, однако программа в настоящее время закрывается немедленно, когда 0 вместо запроса подтверждения.Подтверждение перед закрытием программы C

else if (input == 0)//if they chose to exit 

     { 
printf("You have input 0, program is attempting to close, do you wish to continue? Press 0 for yes, any other number for no"); 
scanf_s ("%d", &secondinput); 


     if (secondinput == 0) 
     { 

      return; 
     } 

     else if (secondinput !=0) 
     { 
      print_menu(1); 
      scanf_s("%d", &input); 
     } 

Я предполагаю, что у меня отсутствует более элегантное решение. Я пробовал несколько вещей и просто не могу заставить его работать.

Пример того, что происходит: 1 вводится, который добавляет целое число к массиву целое число для добавления запрашивается, например. 8 после нажатия 0 программа должна указывать «хотите ли вы закрыть, 0 для« да », любое другое целое число« нет » , однако при нажатии 0 программа немедленно закрывается.

+0

Вы пробовали поставить точку останова на 'if (secondinput == 0)' и посмотреть на значение 'secondinput'? – MarkB42

+0

Как объявляются 'input' и' secondinput'? Какие они? – TarkaDaal

+0

Они оба целые. – Grubbery

ответ

1

Вы можете включить цикл while и включить в них операции.

do 
    { 
     */some operation */ 
     printf("\n enter an number to continue : (0 to stop) :") 
     scanf("%d",&input); 
    }while(input!=0); 

Программа будет продолжаться до тех пор, пока входное число не равно 0.

+1

Я попробую это и посмотрю, как это происходит. – Grubbery

1

Один простой возможностью является то, что STDIN все еще содержит значение ожидания для чтения (ноль специально). Предполагая, что пользователь не вводил что-то вроде 0 0 (два входа) на консоли, тогда кажется вероятным, что проблема кроется в коде, который не показан. Он может как-то не читать от stdin так, как вы ожидаете.

+0

Это тоже была моя мысль, но я пробовал разные входы, например. 1 1 1 0, и он все еще закрывается. Я также сделал чистую сборку, и это не помогло. – Grubbery

+1

@Grubbery: Если вы можете обновить сообщение с полным примером (надеюсь, коротко), который демонстрирует проблему, это, вероятно, приведет к быстрому разрешению. –

+0

Я добавил пример того, как он должен работать: Пример того, что происходит: вводится 1, который добавляет целое число к целому числу массива для добавления, например. 8 после нажатия 0 программа должна указывать «хотите ли вы закрыть, 0 для« да », любое другое целое число« нет », однако при нажатии 0 программа немедленно закрывается. – Grubbery

1

Я не уверен, что остальная часть кода выглядит, но я был в состоянии получить этот код, чтобы работать отлично при вводе 1 и 0, (я использую Visual Studio 2008 с Visual C++)

#include <stdio.h> 

int main(int arg, char** args) 
{ 
    int input; 
    int secondinput; 

    while(1) 
    { 
     printf("input: "); 
     scanf_s("%d", &input); 
     if (input == 1) 
     { 
      //dosomething 
     } 
     else if (input == 0)//if they chose to exit 

     { 
      printf("You have input 0, program is attempting to close, do you wish to continue? Press 0 for yes, any other number for no"); 
      scanf_s ("%d", &secondinput); 


      if (secondinput == 0) 
      { 

       return 0; 
      } 
     } 
    } 
} 
+0

Это прекрасно работает спасибо :) – Grubbery

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