Avatar billede SimonBStoevring Nybegynder
29. juni 2010 - 11:50 Der er 7 kommentarer og
1 løsning

Tæl antal af tegn

Hej.

Jeg er ved at lære C efter bogen The C Programming Language af Kernighan & Ritchie. I bogen er der et eksempel på at tælle tegn i en streng. Når jeg laver og kører dette program får jeg intet output.

#include <stdio.h>

main()
{
    double nc;
   
    for (nc = 0; getchar() != EOF; ++nc);
   
    printf("%.0f\n", nc);
}

Kan nogen fortælle mig, hvad der er galt i ovenstående kode?
Avatar billede janus_007 Nybegynder
29. juni 2010 - 12:27 #1
C, hvorfor dog lære det?

Anyway...din stdin er formentligt tom.

Men hvis du bare skal have længden: strlen
Avatar billede SimonBStoevring Nybegynder
29. juni 2010 - 13:54 #2
Jeg vil gerne lære C for at udvide til Objective-C og derefter Cocoa, så jeg kan ende med at udvikle til Mac OS samt iPhonen.

strlen kan sikkert benyttes, men jeg vil hellere vide, hvad der er galt med koden i første indlæg, da det er et eksempel fra bogen og garanteret kan hjælpe mig til at give en forståelse af sproget.
Avatar billede arne_v Ekspert
29. juni 2010 - 15:05 #3
Jeg gaetter paa at programmet virker som det skal men at det er anderledes end du forventer.

Paa Windows boer du se foelgende:

du taster et antal tegn
du trykker retur
du trykker CTRL/Z (som er EOF)

og programmert udskriver antal tegn + 1 (for retur).

Lidt anderledes paa *nix hvor der skal bruges CTRL/D etc..

Dårligt eksempel efter min mening.

fgets og strlen var bedre.
Avatar billede arne_v Ekspert
29. juni 2010 - 15:05 #4
Jeg kan ioevrigt heller ikke se pointen i at bruge double til antal tegn. Man kan sgu da ikke indtaste tre et halvt bogstav.

Bedre:

#include <stdio.h>

int main()
{
    int nc;
 
    for (nc = 0; getchar() != EOF; nc++);
 
    printf("%d\n", nc);

    return 0;
}
Avatar billede arne_v Ekspert
29. juni 2010 - 15:07 #5
Der kan godt vaere noget logic i at laere C. Det er et ret fundamentalt low level sprog og de fleste konstruktioner i mere high level sprog kan forklares udfra C.

Plus at det faktisk stadigvæk bruges en del. Og vil blive brugt i mange år enddnu.
Avatar billede SimonBStoevring Nybegynder
29. juni 2010 - 15:39 #6
Mange tak skal du have. CTRL + D gør tricket på Mac. Det var jeg ikke klar over, at man skulle trykke.

Grunden til, at der i The C Programming Language bruges double i stedet for int er vist, at der så skulle kunne arbejds med størst mulige tal.

Kan jeg ikke få dig til at lægge et svar?
Avatar billede arne_v Ekspert
29. juni 2010 - 15:43 #7
Da MacOS X har faaet hele non-GUI user land fra FreeBSD som er en Unix giver det mening at MacOS X goer det the Unix way.

Jeg er ret sikker paa at int med din compiler er 32 bit. D.v.s. at der kan vaere tal op til lige godt 2 milliarder.

Jeg tvivler paa at du gider indtaste saa meget!  :-)
Avatar billede arne_v Ekspert
29. juni 2010 - 15:43 #8
Og svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester