Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Hoofdletters tellen gaat niet :(

JaFO
3 antwoorden
  • Ik ben begonnen om C te leren, en ben al een paar kleine foujtes in een boek tegen gekomen die ik zelf kon zien.
    Alleen loop ik nu tegen een programma aan waar ik geen raad mee weet.

    Het is de bedoeling dat het een tekstbestand(ascii) leest en de hoofdletters telt en dit dan vermeld in in een ander bestand.

    Het is een klein programma, dus ik zet het in zijn geel in de post.
    Hier is het dan:
    ————————————-
    #include <stdio.h>

    main(int argc,char *argv[])
    {
    int c,i,letter[26];
    FILE *ifp,*ofp;

    if (argc!=3){
    printf("n%s%s%snn%sn%snn",
    "Gebruik: ",argv[0]," infile outfile",
    "De hoofdletters in infile worden geteld.",
    "De resultaten komen in outfile terecht.");
    exit(1);
    }

    ifp=fopen(argv[1],"r");
    ofp=fopen(argv[2],"w");
    for (i=0;i<26;++i)
    letter=0;
    while((getc(ifp))!=EOF)
    if (c>='A' && c<='Z')
    ++letter[c-'A'];
    for (i=0;i<26;++i) {
    if (i%6==0)
    putc('n',ofp);

    fprintf(ofp," %c : %5d ",'A'+i,letter);
    }
    putc('n',ofp);
    }
    ————————————-

    Weet iemand wat er niet klopt?

    Alvast bedankt!

    Remy
  • [quote:edb24a2c95]
    while((getc(ifp))!=EOF)
    if (c>='A' && c<='Z')
    ++letter[c-'A'];
    [/quote:edb24a2c95]

    In het if-statement doe je een test met c terwijl die nooit een waarde krijgt toegewezen.
    Wijzig [b:edb24a2c95]while((getc(ifp))!=EOF)[/b:edb24a2c95] in [b:edb24a2c95]while((c = getc(ifp)) !=EOF)[/b:edb24a2c95].
  • Wijzig while((getc(ifp))!=EOF) in while((c = getc(ifp)) !=EOF).

    Thanx!! Het werkt!! :smile:

    Remy

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.