2015-09-21 3 views
2

У меня есть дело, я хочу, чтобы сделать цикл, который остановится, когда пользователь вводит число 0, в этом цикле я хочу сделать две вещи:Как сканировать входные данные в c?

  1. Если пользователь хочет добавить данные, то пользователь должен ввести номер «1» и следовать за данными (float), например: 1 2
  2. , если пользователь хочет удалить данные, пользователь должен ввести номер «2» без сопровождения каких-либо данных после этого , Пример: 2

пример пользовательского ввода:

1 5 

1 3 

2 

0 

C код, который я написал, как это:

while(option != 0){ 
    scanf("%d %f",&option,&b); 
    if(option == 1){ 
     Add(&Q,b); 
    }else if(option == 2){ 
     Del(&Q,&b); 
    } 
} 

Но у меня есть проблема, когда я хочу, чтобы удалить данных, я должен ввести число «2», только «2», но из-за этой части кода:

scanf("%d %f",&option,&b); 

Я не могу этого сделать, мне все равно нужно ввести две данные (например, когда я хочу добавить данные), но в опции удаления мне нужно ввести только номер «2».

Как это сделать просто ?, помогите мне, ребята, спасибо.

+0

При удалении, что будет удалить? – Mukit09

ответ

2

Просто получать пользовательский ввод для переменной b только после проверки значения option. То есть только тогда и только тогда option Введенный 1, зсапЕ для b

while(option != 0) { 
    scanf("%d", &option); 
    if (option == 1) { 
     scanf("%f", &b); 
     Add(&Q,b); 
    } else if(option == 2) { 
     Del(&Q,&b); 
    } 
} 
2

Вы можете просто ввести данные b и option в разные scanf. Сначала проверьте option, и если это 1, тогда принимайте вход только в b. что-то вроде этого -

while(option != 0){ 
    scanf("%d",&option); // but always check return of scanf 
    if(option == 1){ 
     scanf("%f",&b); 
     Add(&Q,b); 
    } 
    else if(option == 2){ 
     Del(&Q,&b); 
    } 
} 
Смежные вопросы