Der er flere eksempler - prøv at kigge på tidligere svar:
http://www.eksperten.dk/find.phtml?words=skrive+l%E6se+fil+tekst&catid=4Følgende eksempel læser/gemmer en highscore liste (dvs. navn + point):
F.eks.
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
const int true = 1;
const int false = 0;
typedef struct
{
char Name[11];
unsigned long Score;
} defHighScore;
const int maxHighScores = 100;
defHighScore highScores[maxHighScores];
int readFile(char *fileName)
{
FILE *highFile;
/* Læs high-scores fra fil - hvis der ingen er, lav nogle tomme. */
if ((highFile = fopen(fileName, "r+b")) == NULL)
{
cprintf("High-score filen \'%s\' kunne ikke læses/dannes.\r\n",
fileName);
return false;
};
for (int idx = 0; idx < maxHighScores; idx++)
{
if (fread(&highScore[idx], sizeof(highScore[idx]), 1, highFile) != 1)
{ /* Sidste post læst - lav resten tomme. */
for (;idx < maxHighScores; idx++)
{
sprintf(highScore[idx].Name, "");
highScore[idx].Score = 0;
};
}; /* Hvis score ikke kunne læses.
}; // Indtil alle high-scores er læst.
fclose(highFile);
return true;
} // readFile
int writeFile(char *fileName)
{
FILE *highFile;
/* Læs high-scores fra fil - hvis der ingen er, lav nogle tomme. */
if ((highFile = fopen(fileName, "w+b")) == NULL)
{
cprintf("High-score filen \'%s\' kunne ikke skrives/dannes.\r\n",
fileName);
return false;
};
for (int idx = 0; idx < maxHighScores; idx++)
{
if (fwrite(&highScore[idx], sizeof(highScore[idx]), 1, highFile) != 1)
{ /* Ikke alle poster kunne skrives. */
fclose(highFile);
cprintf("Ikke alle poster kunne skrives. (Post nr. %d)",
idx + 1);
return false;
}; /* Hvis score ikke kunne læses.
}; // Indtil alle high-scores er læst.
fclose(highFile);
return true;
} // writeFile
int main(int argc, char *argv[])
{
if (argc < 2)
{
cprintf("FEJL: Angiv navnet på high-score filen.\r\n");
return -1;
}
/* Læs highscores fra filen. */
if (!readFile(argv[1]))
return -1;
/* Vis high scores. */
cprintf("%-20s %8s\r\n", "Spiller", "Score");
for (int idx = 0; idx < maxHighScores; idx++)
{
if (strncmp(highScore[idx].Name, "", sizeof(highScore[idx].Name)-1) != 0)
{
cprintf("%-20s %8lu\r\n", highScore[idx].Name, highScore[idx].Score);
}
else
idx = maxHighScore;
};
/* Noget kode til at ændre på highscores. */
/* Skriv de nye high-scores. */
if (!writeFile(argv[1]))
return -1;
return 0;
} // Main