Witam
Jak uzywając funkcji scanf ze specyfikatorem %d zrealizować poniższy zamiar. Powiedzmy, że w polu int a mam już jakąś wartość. Daję zatem użytkownikowi dwie możliwości: Albo wciśnie Enter, i wtedy stara wartość pozostanie w polu, albo wpisze nową wartość dla tego pola i wciśnie Enter. W drugim przypadku wszystko śmiga, ale w pierwszym scanf("%d", &a) nie chce zakończyć czytania przy napotkaniu w buforze '\n'. Można to jakoś obejść?
0
1
Raczej tylko zabawy "na około", tzn wczytanie co tam user podał (liczba + \n czy samo \n) a potem parsowanie jeśli była liczba.
0
Użycie ungetc() coś by pomogło?
EDIT: Nie, nie pomogło.
Pojawiła się inna kwestia:
while((c = getchar()) != EOF && c != '\n')
fgets(c_temp, sizeof(c_temp), stdin);
if(c_temp[0] != '\n'){
sscanf(c_temp, " %f", &i);
}
Czemu ten kod potrzebuje aż dwóch enterów przy fgets żeby zakończyć zczytywanie danych? Jeden mu nie wystarczy?
EDIT:
Ok, doszedłem. Na końcu powyższego miałem jeszcze raz czyszczenie bufora:
while((c = getchar()) != EOF && c != '\n');
A że bufor po fgetsie był pusty, toteż c=getchar() czekało na jakikolwiek znak. Dzięki za pomoc!