Gjest Skrevet 23. august 2012 Del Skrevet 23. august 2012 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
LostOblivion Skrevet 23. august 2012 Del Skrevet 23. august 2012 (endret) Skriv [ code] dette [/code] rundt koden din. Prøv med testen getchar() != '\n', i stedet. Endret 23. august 2012 av LostOblivion Lenke til kommentar
etse Skrevet 23. august 2012 Del Skrevet 23. august 2012 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
Gjest Skrevet 23. august 2012 Del Skrevet 23. august 2012 (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 23. august 2012 av Gjest Lenke til kommentar
LostOblivion Skrevet 23. august 2012 Del Skrevet 23. august 2012 '\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. Lenke til kommentar
Gjest Skrevet 23. august 2012 Del Skrevet 23. august 2012 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å? Lenke til kommentar
LostOblivion Skrevet 23. august 2012 Del Skrevet 23. august 2012 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
Gjest Skrevet 23. august 2012 Del Skrevet 23. august 2012 Ser den, anser da problemet løst Takk igjen. Lenke til kommentar
etse Skrevet 23. august 2012 Del Skrevet 23. august 2012 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. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå