Att det blir fel beror på att du inte har koll på "precedence"-reglerna (vad det nu heter på svenska).
Din while-sats borde vara
while((tkn = fgetc(minFil)) != EOF){
4 svar · 567 visningar · startad av Broms
Jag skall läsa in en .txt-fil och analysera denna.
Programmet skall beräkna antal tecken, antal siffror samt antal rader... Antalet tecken pallar den med, men ej siffror samt rader.. var har blitt knas?! *slita håret*
#include <stdio.h>
#include <stdlib.h> //andvänds för system() och exit()
#include <string.h> //används för strlen()
#include <ctype.h> //används för isdigit()
int main(int argc, char *argv[])
{
char filnamn[128], text[1000];
char tkn;
int n, tecken=0, siffror=0, rader=0;
//deklarerar pekaren minFil av typen FILE
FILE *minFil ;
printf("Ange filnamn ");
//läser in filnamnet
fgets(filnamn, 128,stdin);
//avläser längden på filnamnet
n = strlen(filnamn);
//byter ut sista tecknet i filnamnet mot \0
if(n>0)
filnamn[n-1]='\0';
//kollar om filen verkligen kan öppnas för läsning(r = read)
if((minFil = fopen(filnamn, "r")) == NULL){
fputs("\n Kan ej \x94ppna filen.. \n\n\n Programmet avslutas..\n", stderr);
exit(99);
}
//läser tecken för tecken fram tills End Of File uppnåtts
while(tkn = fgetc(minFil) != EOF){
if (isdigit(tkn)) siffror++;
if (tkn == '\n') rader++;
tecken++;
}
printf("Filen \"%s\" innehåller f\x94ljande..\n\n",filnamn);
printf("Antal tecken: %d\n",tecken);
printf("Antal siffror: %d\n",siffror);
printf("Antal rader: %d\n",rader);
printf("\n\nProgrammet avslutas..\n");
//stänger minFile
fclose(minFil);
system("PAUSE");
return 0;
}
Att det blir fel beror på att du inte har koll på "precedence"-reglerna (vad det nu heter på svenska).
Din while-sats borde vara
while((tkn = fgetc(minFil)) != EOF){
tackar så mkt pimme
Halloj.
Jag håller på och lär mig lite programmering. Lite frågor angående din kod:
text[1000] - Vad används den till? Jag kanske har missat det, men jag ser inte var den används i koden.
//byter ut sista tecknet i filnamnet mot \0
if(n>0)
filnamn[n-1]='\0';
Varför gör man så?
Tack på förhand.
/En novis
Arrayen text används inte, nej.
if-satsen är till för att se till att inte skrivning till förbjudet minnesutrymme sker av termineringen av strängen. Skulle annars leda till en krasch av programmet.