---
title: "analysera tecken ur en fil"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/129707-analysera-tecken-ur-en-fil"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Broms"
published: "2005-06-08T23:29:43.000Z"
updated: "2005-10-11T14:02:24.000Z"
replies: 4
views: 598
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/129707-analysera-tecken-ur-en-fil"
---

# analysera tecken ur en fil

## #1 — Broms, 2005-06-08T23:29Z

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\*

```php
#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;
}
```

Permalänk: https://www.webforum.nu/p/129707

## #2 — pimme, 2005-06-09T00:05Z

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){
```

Permalänk: https://www.webforum.nu/p/1628647

## #3 — Broms, 2005-06-09T03:13Z

tackar så mkt pimme

Permalänk: https://www.webforum.nu/p/1628655

## #4 — Phalle, 2005-10-11T10:04Z

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

Permalänk: https://www.webforum.nu/p/1686453

## #5 — PeW, 2005-10-11T14:02Z

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.

Permalänk: https://www.webforum.nu/p/1686555

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/129707-analysera-tecken-ur-en-fil
