Avatar billede danielhep Nybegynder
17. september 2002 - 12:50 Der er 5 kommentarer og
1 løsning

Fopen

Ok....Jeg er lige gået totalt kold i den her kode...

#include <stdio.h>
#include <conio.h>
FILE *stream;
int c;
int r;
void main()
{
stream = fopen("log.txt","r");
r = fputc(c,stream);
fclose(stream);
getch();
}


Det som jeg vil er at åbne en fil med fopen i en variabel og så skrive den tekst som står i filen ud på skærmen... :)
Avatar billede chries Nybegynder
17. september 2002 - 13:01 #1
#include <stdio.h>
#include <conio.h>

FILE *stream;
int r;

void main()
{
    stream = fopen("c:\\log.txt","r");

    r = fgetc(stream);
    while( r != EOF )
    {
        printf( "%c", r );
        r = fgetc(stream);
    }

    fclose(stream);
    getch();
}
Avatar billede danielhep Nybegynder
17. september 2002 - 13:05 #2
Hvorfor har du denne linie to gange??

r = fgetc(stream);
Avatar billede chries Nybegynder
17. september 2002 - 13:07 #3
fordi den skal ind i lykken :-) det er bare et spørgsmål at lave en omskrivning, f.eks:

#include <stdio.h>
#include <conio.h>

FILE *stream;
int r;

void main()
{
    stream = fopen("c:\\log.txt","r");
    while( (r = fgetc(stream)) != EOF )
    {
        printf( "%c", r );
    }

    fclose(stream);
    getch();
}
Avatar billede chries Nybegynder
17. september 2002 - 13:07 #4
..løkken..
Avatar billede danielhep Nybegynder
17. september 2002 - 13:11 #5
åhh jeg er så "løkkkelig" *gg*

tak for hjælpen Chries.. Ø:)
Avatar billede soepro Nybegynder
17. september 2002 - 13:45 #6
tja - fputc() læser jo i alt fald ingen ting.

Der er dog een lille detalje omkring brugen af fgetc() - nemlig at den stopper ved første Ctrl+Z og ikke nødvendigvis ved fysisk end-of-file.

Følgende vil læse alle tegn indtil fysisk end-of-file:
#include <stdio.h>
#include <conio.h>

FILE *stream;
char  buffer[256];
int  r, idx;

void main()
{
    stream = fopen("c:\\log.txt","rb");
    while((r = fread(&buffer, 1, sizeof(buffer), stream)) > 0)
    {
      for (idx = 0; idx < r; idx++)
        printf( "%c", buffer[idx]);
    }

    fclose(stream);
    getch();
}

Open option "rb" betyder at filen åbnes binært (i modsætning som tegn fil), hvilket betyder at CR+LF i enden af en linie bliver læst og at LF ('\n') *ikke* automatisk bliver lavet om til CR+LF. ('\r\n') fread() læser 1 byte sizeof(buffer) (dvs. max 256) gange - og returnerer 0 når fysisk eof er nået. Fordelen ved fread er derudover at du kun laver een disk I/O pr. 256 bytes, frem een gang pr. byte => øget hastighed.
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