Den Sun, 13 May 2007 19:49:20 +0200 skrev Jesper Staun Hansen:
> Kent Friis wrote:
>> Den Sun, 13 May 2007 12:20:09 +0200 skrev Jesper Staun Hansen:
>>> jespr wrote:
>>>> Bertel Brander wrote:
>>>>> jespr skrev:
>>>>>> Bertel Brander wrote:
>>>>>>> Martin M. Pedersen skrev:
>>>>>>>
>>>>>>>>> Hvorfor laver den lige den første loop hvor den bare hopper igennem
>>>>>>>> Tilføj en fflush(stdin) i starten af programmet for at tømme stdin,
>>>>>>>> når du starter.
>>>>>>> Man kan ikke flushe en input stream, som f.eks. stdin.
>>>>>>> At det ser ud til at "virke" på din computer med din compiler
>>>>>>> betyder langt fra at det vil virke på andre computere med
>>>>>>> andre compilere.
>>>>>>>
>>>>>>> Løsningen er som altid at bruge fgets til alle læsninger fra
>>>>>>> keyboard. Dvs. ingen scanf, getc osv.
>>>>>>>
>>>>>> Jamen er det ikke det den oprindelige spørger gør?
>>>>> Hvis man ser i de andre tråde som OP har haft de seneste
>>>>> dage kan man se at scanf er blevet brugt.
>>>>> Derfor har jeg en mistanke om at der er en scanf inden
>>>>> den stump kode vi har set.
>>>>>
>>>> uuu godt spottet, hvis det er tilfældet.
>>>>
>>>> Jespr
>>> Man kan sige jeg stadig er under "oplæring", så jeg eksperimenterer med
>>> hvordan de forskellige prototyper reagerer med resten af koden i en
>>> helhed og her finder jeg at der er mange af disse som bare "hopper
>>> videre" af hvad jeg kan se er uden grund, men fik da en forklaring
>>>
>>> Jeg undre mig dog lige lidt over at Bertel Brander siger jeg altid skal
>>> bruge den når den hopper således? - Det kunne dog være jeg skulle se
>>> hans svar i forbindelse, at jeg bruger fgets i forbindelse med scanf som
>>> er skøre på hinanden når de bruges efter hinanden.
>>
>> Det er såmænd ikke at de "er skøre på hinanden", du skal bare passe
>> på med hvor meget du læser. Det du ikke læser vil stadig ligge i
>> bufferen til næste gang.
>>
>> Fx hvis du taster "test" <enter>, og læser "test", hvad er der så
>> tilbage? <Enter> er bare et tegn som alle andre, og hvis den stadig
>> ligger i bufferen når du når til fgets, vil den blot læse en tom
>> streng.
>
> Ja, så derfor burde jeg vel helt undgå at bruge scanf, da hvis den
> ligger sig ind i bufferen, vil den bare gøre i det uendelige? eller?
Jeg prøver lige igen...
Fx hvis du taster "test" <enter>, og læser "test", hvad er der så
tilbage? <Enter> er bare et tegn som alle andre, og hvis <enter>
stadig ligger i bufferen når du når til fgets, vil fgets blot læse
en tom streng, da fgets kun læser hen til og med <enter>.
Så skulle der ikke være noget tvetydige ord som "den".
Det har som sådan ikke noget med scanf at gøre, det er hvilke tastetryk
der ligger i bufferen det kommer an på.
Mvh
Kent
--
"So there I was surrounded by all these scary creatures
They were even scarier than what Microsoft call features"
- C64Mafia: Forbidden Forest (Don't Go Walking Slow).