char theInput[10];
long option;
int innerLoop = 1;
char *dunno;
while(innerLoop == 1){
printf("\nType '1' to get your change, '2' to select another item, or '3' to add more funds: ");
fgets(theInput, sizeof theInput, stdin);
option = strtol(theInput, &dunno, 10);
if(option == 1){
loop = 0;
innerLoop = 0;
}else if(option == 2){
loop = 1;
outerLoop = 1;
innerLoop = 0;
firstLoop = 0;
}else if(option == 3){
loop = 1;
innerLoop = 0;
outerLoop = 1;
firstLoop = 1;
}else{
printf("\nInvalid input, please try again.\n");
innerLoop = 1;
}
}
Результат этого кода заключается в том, что при первом запуске он печатает «тип» 1, чтобы получить «часть, за которой следует прерывание строки, за которым следует «Недопустимый ввод, повторите попытку». без ввода каких-либо команд из командной строки. Затем он печатает первый оператор printf, а затем принимает вход и работает. Он предназначен для печати первого оператора, а затем ожидания ввода.В цикле while fgets() запускается путем самозапускания в новой строке как входной сигнал
Ниже приводится вывод терминала.
«Тип„1“, чтобы получить ваши изменения,„2“, чтобы выбрать другой пункт, или„3“, чтобы добавить больше средств:. Неверный ввод, пожалуйста, попробуйте еще раз
Тип„1“, чтобы получить ваш изменить «2», чтобы выбрать другой элемент, или «3», чтобы добавить дополнительные средства: «
Код, который вы опубликовали, не печатает упоминаемое вами вещество (например, «Тип« C », чтобы получить ваше изменение»). Вероятно, ошибка в той части вашего кода, которую вы не опубликовали .. – nos
Спасибо за ваш ответ. Это моя ошибка обновления моего кода во время публикации - я изменил его с C, N и A на 1, 2, 3, потому что я думал, что обработка целых чисел может быть проще. Я обновил сообщение, так что все так, как в настоящее время работает на моем компьютере. – Vorkos
Ранее неопубликованный код использовал функцию ввода, которая оставила '' \ n'' в 'stdin'. – chux