[SOLVED] scanf(), wczytywanie integera i problem z NEWLINE w buforze

0

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ść?

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!

1 użytkowników online, w tym zalogowanych: 0, gości: 1