anoniem Geplaatst: 7 maart 2002 Delen Geplaatst: 7 maart 2002 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[i]=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[i]); } putc('n',ofp); } ------------------------------------- Weet iemand wat er niet klopt? Alvast bedankt! Remy Quote Link naar reactie
anoniem Geplaatst: 8 maart 2002 Auteur Delen Geplaatst: 8 maart 2002 [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]. Quote Link naar reactie
anoniem Geplaatst: 8 maart 2002 Auteur Delen Geplaatst: 8 maart 2002 Wijzig while((getc(ifp))!=EOF) in while((c = getc(ifp)) !=EOF). Thanx!! Het werkt!! :smile: Remy Quote Link naar reactie
anoniem Geplaatst: 10 maart 2002 Auteur Delen Geplaatst: 10 maart 2002 [quote:748afdb142] Op 08-03-2002 1:23, schreef remybosch: Wijzig while((getc(ifp))!=EOF) in while((c = getc(ifp)) !=EOF). Thanx!! Het werkt!! :smile: Remy [/quote:748afdb142] Dat krijg je er van als je als beginneling zo C probeert te schrijven ... Als je alle statements op eigen regel had gezet was het meteen duidelijk geweest. [code:1:748afdb142] c = getc(ifp); while(c != EOF) { if (c >= 'A' && c <= 'Z') letter[c - 'A']++; c = getc(ifp); } [/code:1:748afdb142] Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen