Det er sansynligvis mig der er ualmindelig langsom, men jeg forstår stadig ikke hvad spørgsmålet er.
Når man læser fra en fil er det letteste at blive ved med at læse til man når enden. Man kan checke dette med feof(fp) eller blot ved at checke om en læsning fejler. Vær opmærksom på at feof(fp) først returnerer true når man forøger at læse efter slutning på filen, og ikke når man er ved slutningen.
I mangel af bedre lavede jeg et lille eksempel:
#include <stdio.h>
#include <string.h>
typedef struct
{
char fornavn[40];
char efternavn[40];
}profile_type;
profile_type profile[100];
int Hent_fra_Fil(void)
{
int x;
char *s;
FILE *fp = fopen("datab.txt", "rt");
if(!fp)
{
return 0;
}
for(x = 0; x < 100 && !feof(fp); x++)
{
fgets(profile[x].fornavn, 40, fp);
if((s = strchr(profile[x].fornavn, '\\n')) != 0)
*s = 0;
fgets(profile[x].efternavn, 40, fp);
if((s = strchr(profile[x].efternavn, '\\n')) != 0)
*s = 0;
}
fclose(fp);
return x - 1;
}
void Skriv_til_Fil(int Num)
{
int z;
FILE *fp = fopen("datab.txt","wt");
if(!fp)
{
return;
}
for(z = 0; z < Num; z++)
fprintf(fp, "%s\\n%s\\n", profile[z].fornavn, profile[z].efternavn);
}
int main(void)
{
char buf[40], *s;
int j;
int NumPerson = Hent_fra_Fil();
printf("I databasen nu:\\n");
for(j = 0; j < NumPerson; j++)
printf("%s %s\\n", profile[j].fornavn, profile[j].efternavn);
printf("Intast ny persons fornavn: ");
fflush(stdout);
fgets(buf, sizeof(buf), stdin);
if((s = strchr(buf, '\\n')) != 0)
*s = 0;
strcpy(profile[NumPerson].fornavn, buf);
printf("Intast ny persons efternavn: ");
fflush(stdout);
fgets(buf, sizeof(buf), stdin);
if((s = strchr(buf, '\\n')) != 0)
*s = 0;
strcpy(profile[NumPerson].efternavn, buf);
NumPerson++;
printf("I databasen nu:\\n");
for(j = 0; j < NumPerson; j++)
printf("%s %s\\n", profile[j].fornavn, profile[j].efternavn);
Skriv_til_Fil(NumPerson);
return 0;
}
Det starter med at læse filen, bemærk at x bliver talt en for mange op i Hent_fra_Fil.
Så beder den brugeren om at indtaste for og efter navn på en ny person.
Alle personer bliver til slut gemt i filen.
Hvis ikke det hjælper så fortæl præcist hvad det er I beder om hjælp til, så selv jeg kan forstå det.