Gå til innhold

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


Gjest

Anbefalte innlegg

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

Lenke til kommentar
Videoannonse
Annonse

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')

Lenke til kommentar

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
Lenke til kommentar

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.

Lenke til kommentar

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...