Avatar billede dank Nybegynder
03. juli 2004 - 23:06 Der er 4 kommentarer og
1 løsning

Læs linie fra fil & løkke indtil fil er eof

Sidder og forsøger at lære lidt C, ved learning by doing :)

Haqr basket følgende sammen:

#include <stdio.h>

int main(){

    FILE *inFile;
    char myline[256];

        inFile = fopen("/var/log/messages","r");
        if (inFile == NULL){
        printf("\nfailed...\n");
        }

    while (1){
        fgets(myline, 280, inFile);
        printf("myline %s", myline);

}


return 0;
}


1: Hvordan skal myline defineres så der altid kan være en linie i denne? Hvordan kan man det, når man ikke kender strengens længde?

2: Ovenstående virker fint, men kører indtil sidste linie er nået og går så i løkke på sidste linie. Hvordan undgåes dette?

3: Hvordan kan jeg sikre mig at der kun læses en linie af gangen?  Kan jeg f.eks. læse til etellerandet = \n, eller hvordan gør man normalt dette?

På forhånd tak.
Avatar billede arne_v Ekspert
03. juli 2004 - 23:09 #1
re 1)

sådan er C (C++ STL string har ikke det problem)

du kan dog læse dele af en linie med andre kald end fgets

normalt ved man hvad max. linie længde vil være
Avatar billede arne_v Ekspert
03. juli 2004 - 23:10 #2
re 2)

fgets returnerer NULL ved eof så prøv

while(fgets(myline,sizeof(myline),inFile))
  printf("myline %s", myline);
Avatar billede arne_v Ekspert
03. juli 2004 - 23:10 #3
re 3)

fgets læser kun en linie af gangen => har du løst
Avatar billede arne_v Ekspert
03. juli 2004 - 23:11 #4
Det var med vilje at jeg udskiftede 280 med sizeof(myline)

Og et svar
Avatar billede dank Nybegynder
03. juli 2004 - 23:22 #5
Takker.. Den med sizeof er smart :o)
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