27. september 2004 - 00:00Der er
19 kommentarer og 1 løsning
Funktion : Validere input fra scanf()
Jeg sidder med et lille problem, som jeg ikke rigtigt kan finde et ordentligt svar på. I mit program skal jeg kunne modtage forskellig input fra brugeren, normalt i form af et enkelt tal eller et koordinat (x,y).
Jeg foretrækker at bruge printf og scanf frem for cout og cin. Problemet er at jeg skal sikre mig mod ugyldigt input fra brugeren. Så hvis programmet ber om en integer og brugeren indtaster en char, skal den lade som ingen ting og lade brugeren indtaste et nyt tal, indtil inputtet er korrekt.
Hvad jeg gerne vil have er en funktion som kan gøre det hele på en gang... tage imod et input, checke at det er gyldigt, hvis det er returneres inputtet, hvis ikke startes forfra. Tænkte det ville være hurtigt overstået, så jeg lavede følgende test kode
Ovenstående kode compiler og virker fint, men her er problemet
1. Hvis jeg fjerner den sidste 'break', for at få den til at starte forfra hvis inputtet er ugyldigt går den helt i ged. Hvis jeg indtaster en ugyldig værdi bliver den ved med at skrive 'Invalid!' om og om igen, istedet for at spørge om en ny værdi.
2. Jeg vil gerne gøre funktionen mere dynamisk, så jeg kan sende den en anden parameter, indeholdende en pointer til en variabel af en hvilken som helst type. Altså jeg kunne skrive inp( "%2d", &someint ) eller inp( "%1c", &somechar ) og funktionen ville så bruge den pointer til at gemme inputtet i. Aner ikke hvordan dette kan gøres, men hvis scanf() kan, så kan jeg vel også :)
Mød TrackMan og Veo på Computerworld Cloud & AI Festival og hør, hvordan tech ændrer måden, vi træner og udvikler talent – fra skolebold til The Masters.
7.19.5.2 The fflush function Synopsis #include <stdio.h> int fflush(FILE *stream);
Description Ifstream points to an output stream or an update stream in which the most recent operation was not input, the fflush function causes any unwritten data for that stream to be delivered to the host environment to be written to the file; otherwise, the behavior is undefined.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.