Это не обязательно лучшее решение, но другим подходом может быть использование fscanf()
:
while(choice != 0)
{
printf("enter number");
fscanf(stdin, "%d", &choice);
if(choice > 0)
{
printf("enter percentage\n");
fscanf(stdin, "%f", &percentage);
//add to an array holding numbers vs percentages
}
}
Таким образом, вам не нужны временные буферы line
и percent_line
. Функция fscanf()
будет автоматически продолжать чтение ввода до тех пор, пока не получит то, что ищет - это означает, что если вы просто нажмете Enter при появлении запроса «Ввести номер», функция fscanf()
не вернется и продолжит чтение ввода, пока вы не введите число. Кроме того, обработка ошибок не реализована в вышеупомянутом, я оставляю читателю в качестве упражнения исправление проблемы, которая возникает, когда вы вводите что-то, что не число.
(Обратите внимание, что я также изменил choice
на &choice
, что, я думаю, вы и предполагали в первую очередь.)