делать что-то особенное, когда пользователь вводит пустую строку - PullRequest
0 голосов
/ 16 марта 2010

Я только начинаю изучать C. У меня есть программа, которая печатает меню и позволяет пользователям выбирать, что делать, шаг за шагом. Теперь я хотел бы вернуться в главное меню всякий раз, когда пользователь вводит пустую строку, но как я могу это сделать?
Я думаю, что могу сделать функцию, которая возвращает программу в главное меню, но когда вызывать эту функцию? Я знаю, что не стоит ставить if-else, когда я scanf что-то ...

Я привык к миру ОО, так что это немного незнакомо мне, пожалуйста, помогите:)

Ответы [ 4 ]

1 голос
/ 16 марта 2010

Я предполагаю, что вы используете оператор switch для фильтрации своего ввода, поэтому просто укажите опцию '\ n' или символ новой строки для вывода на печать меню.

1 голос
/ 16 марта 2010

Если вы делаете что-то вроде:

printf("0)     do something\n");
printf("1)     do something else\n");
printf("enter) main menu\n");

... тогда scanf на самом деле не твой друг.

Вы могли бы сделать что-то вроде этого:

char buf[80];  
int choice;
printf(menu_text);
fgets(buf, 80, stdin);
if(strlen(buf))
{
    sscanf(buf, "%d", &choice);
    switch(choice)
    {
    case 0:
        /* etc */
        break;
    case 1:
        /* etc */
        break;
    }
}
else
{
    go_back_to_main_menu();
}
1 голос
/ 16 марта 2010

Это зависит от того, общается ли пользователь, отправляя строку или одиночный символ / нажатие клавиши.

Если вы общаетесь по строке, попробуйте начать с:

char  buffer[MAX_BUF_LEN];
char* pBuffer = buffer;
scanf("%s%*c",pBuffer);
if (strlen(pBuffer) == 0)
  goto_main_menu();
else
  process_user_input(pBuffer);

Если вы общаетесь с помощью символа / нажатия клавиш, попробуйте начать с:

int inkey = getchar();
if (inkey == '\n')
  goto_main_menu();
else
  process_user_input(inkey);

Использование "if / else" после вас scanf что-то совершенно правильно. Все, что отправлено от пользователя, должно быть проверено и проверено, прежде чем оно все равно будет использовано.

0 голосов
/ 16 марта 2010

Язык C не является миром OO, поэтому я бы сказал, придерживайтесь if-else. В любом случае, при создании текстовых меню вы обычно получаете switch(user_choice) if-else.

Вам нужна помощь с scanf()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...