Beste tweakers,
Ik probeer een programma te schrijven dat de input leest, en bij foutieve input een foutmelding afgeeft.
Mijn probleem is echter dat als ik een waarde verwacht (%d) en een letter stuur, dan kom ik in een oneindige loop, Ondanks dat ik de buffer wis.
Zelfs als ik een voorbeeld programma gebruik die als doel heeft om een goed werkende scanf te hebben.
Ik denk zelf dat het aan de compiler of OS ligt.
Wat ik dus krijg als ik een letter invoer:
Geef een getal: Geef een getal: Geef een getal: Geef een getal: etc.
Ik gebruik code::blocks in LinuxMint met de GNU gcc compiler in C90.
Iemand enig idee wat hier precies gebeurd en wat er aan gedaan kan worden?
Ruben
Ik probeer een programma te schrijven dat de input leest, en bij foutieve input een foutmelding afgeeft.
Mijn probleem is echter dat als ik een waarde verwacht (%d) en een letter stuur, dan kom ik in een oneindige loop, Ondanks dat ik de buffer wis.
Zelfs als ik een voorbeeld programma gebruik die als doel heeft om een goed werkende scanf te hebben.
Ik denk zelf dat het aan de compiler of OS ligt.
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| #include <stdio.h> int main(void) { int getal; do { printf("Geef een geheel getal: "); fflush(stdin); } while (scanf("%d", &getal) != 1); printf("Het getal is %d.\n", getal); printf("Druk op de Enter toets om dit window te sluiten."); fflush(stdin); getchar(); return 0; } |
Wat ik dus krijg als ik een letter invoer:
Geef een getal: Geef een getal: Geef een getal: Geef een getal: etc.
Ik gebruik code::blocks in LinuxMint met de GNU gcc compiler in C90.
Iemand enig idee wat hier precies gebeurd en wat er aan gedaan kan worden?
Ruben