Я пытаюсь написать небольшую программу, в которой пользователь указывает, что они хотят ввести n много nunmbers, после чего им предлагается ввести n много поплавков в последующих строках с подсказкой. Ожидаемый выходДля пропуски цикла scanf()
$./a.out
How many number (at least two)? > 4
Enter a number (3 more to enter) > 2
Enter a number (2 more to enter) > 3
Enter a number (1 more to enter) > 5
Enter a number (0 more to enter) > 7
Однако моя программа в настоящее время читает в первый вход (2, в случае моего примера), а затем пропускает ввод данных пользователем остальной части подсказок.
Выход для моего текущего кода
$./a.out
How many number (at least two)? > 4
Enter a number (3 more to enter) > 7
Enter a number (2 more to enter) >
Enter a number (1 more to enter) >
Enter a number (0 more to enter) >
Я искал решение here, here и here, но я не мог получить что-нибудь работать. Есть ли какие-либо предложения о том, как заставить scanf работать в этом? Я бы предпочел использовать scanf, поскольку мы не рассматривали использование каких-либо функций get.
#include <stdlib.h>
#include <stdio.h>
main(){
int i,n;
int temp_count,count,rv;
float number[10000];
printf("How many number (at least two)? > ");
rv = scanf("%d",&n);
if(n<2||rv!=1){
printf("Please enter at least two numbers");
}
count=n;
for(i=0;i<n;i++){
count--;
printf("Enter a number (%d more to enter) > ",count);
fflush(stdin);
scanf(" %.2f",number[i]);
}
return(0);
} //end main
Ах, пропуская и была тупой ошибкой, которую я не поймал. Однако даже при удалении fflush (...) я не получаю правильный результат. –
@ Zermelo's_Choice Также исправить спецификатор формата. Сканировать '% f'. Вы можете использовать '% .2f' с' printf() ', но не с' scanf() '. – Kusalananda
@ Zermelo's_Choice «Я не получаю правильный вывод», но также принял ответ. Можете ли вы прояснить, что решило вашу проблему, чтобы читатели знали? –