Gå til innhold

Programmering i C, spørsmål om enkel kode.


Gjest

Anbefalte innlegg

Skrevet

Hei!

 

Er akkurat startet med å programmere i C, og har et spørsmål om en kode.

 

KODEN:

main ()

{

 

long nc;

nc = 0;

 

while (getchar() != EOF)

{

nc++;

}

printf("%ld \n", nc);

 

}

 

Ideen er at koden skal telle antall elementer i en streng.

Problemet er at når jeg kjører programmet, og skriver inn en streng, så skjer det ingenting.

 

Noen som vet hva problemet er?

 

P.S, ser ikke ut som diskusjon.no vil indentere koden min rikig, så her er en link fra pastebin: http://pastebin.com/a41Di5Rc

Videoannonse
Annonse
Skrevet

Når du skriver kode her må du bruke "code-tags". Disse er markert med < > i GUI-verktøyet.

 

Uansett, koden din fungerer helt fint, men tror du har missforstått hva "EOF" er. Den leser til "END OF FILE", noe som egentlig har liten mening når det kommer til STDIN (altså input fra brukeren). Om du tenker på å lese inn en linje og få ut hvor mange tegn i denne linjen vil vel heller dette bli riktig:

 

while (getchar() != '\n')

Skrevet (endret)

Takker for raske svar..

 

Vet ikke hva som er problemet, bruker xCode på Mac for å programmere.. kanskje det er det som er problemet..

 

Bruker boken "The C Programming Language", så koden stammer derfra.

 

 

 

EDIT: å redigere koden til while (getchar() != '\n') fungerte fint. men kun for 1linje.

Endret av Gjest
Skrevet

'\n' er en escape-character som betyr linjeskift. Når du skriver inn noe i programmet ditt, trykker du alltid enter til slutt. Enter forårsaker linjeskift, og derfor vil den lese tekst helt til den leser linjeskift, skrive ut tallet og avslutte.

Skrevet

Okei, men ser boka bruker EOF en del. EOF fungerte når jeg hadde en kode som skulle kopiere input.

Hvorfor fungerer det ikke nå?

Skrevet

Boken du bruker er veldig god for å lære seg å programmere. Du lærer mye grunnleggende og nyttig, men siden den er såpass gammel må du ta noen ting av det som står der med en klype salt. Ikke heng deg opp i småting som dette.

 

EOF betyr End Of File, og ble ofte før brukt på å markere slutten på både input og fil. I dag ville jeg heller bare sjekket for linjeskift, da dette gir mer mening for input fra terminal. Dersom du hadde lest fra en "vanlig" fil, ville du fått EOF til slutt, men ikke nødvendigvis når du leser fra direkte brukerinput.

Skrevet

Ser den, anser da problemet løst ;)

 

 

Takk igjen.

Skrevet

På linux kan du også ved terminal-input si ifra at du har nådd "END OF FILE" på userinput ved å trykke CTRL + D. Programmet ville da skrevet ut anntall tegn du har trukket frem til du trykket før CTRL+D.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...