Kirjoitin oheisen pätkän ohjelmaa. Siinä kysytään määrittelemääni kirja-tietotyyppiin tietoja:
for (i = 0; i < kirja_lkm; i)
{
printf("\nAnna kirjan numero > ");
scanf("%d", & taulu[i].kirja_numero);
printf("\nAnna kirjan nimi > ");
gets(taulu[i].kirjan_nimi);
printf("\nAnna kirjailijan nimi > ");
gets(taulu[i].kirjailija);
printf("\nAnna kirjan hinta > ");
scanf("%f", & taulu[i].hinta);
}
Tuossa kirjan numeron syöttämisen jälkeen ohjelma ohittaa kirjan nimen kysymisen. Ilmeisesti tuo enter-merkki luetaan muuttujaan. Miten voin poistaa tuon enter-merkin häiritsemästä? C:ssähän ei kai ole C :n tapaista ignore-funktiota. Minkä ehdon mukaan saan tuon syötön pelaamaan kuten pitää.
for (i = 0; i < kirja_lkm; i)
{
printf("\nAnna kirjan numero > ");
scanf("%d", & taulu[i].kirja_numero);
printf("\nAnna kirjan nimi > ");
gets(taulu[i].kirjan_nimi);
printf("\nAnna kirjailijan nimi > ");
gets(taulu[i].kirjailija);
printf("\nAnna kirjan hinta > ");
scanf("%f", & taulu[i].hinta);
}
Tuossa kirjan numeron syöttämisen jälkeen ohjelma ohittaa kirjan nimen kysymisen. Ilmeisesti tuo enter-merkki luetaan muuttujaan. Miten voin poistaa tuon enter-merkin häiritsemästä? C:ssähän ei kai ole C :n tapaista ignore-funktiota. Minkä ehdon mukaan saan tuon syötön pelaamaan kuten pitää.
Vastaukset 2
Vanhimmat
kirjan numero merkkijonoon, ja muunna se sscanf:lla numeroksi.
koitappas semmosta tuohon scanf perään kuin
fflush(stdin);