Avatar billede mouse-the-mighty Nybegynder
12. juni 2002 - 09:38 Der er 7 kommentarer og
1 løsning

læse og skrive fra fil

Jeg sidder og er ligeså stille ved at lære at programmere i C.
jeg har fået til opgave at lave en highscore liste
der bliver skrevet i en alm txt fil.....

så jeg skal bruge 3 meget simpele koder der
1: læser fra filen
2: skriver til filen
3: ser om filen er der (ellers oprettes den)
Avatar billede killer_bee Nybegynder
12. juni 2002 - 10:03 #1
Hva bruger du Borland eller VC++
Avatar billede mouse-the-mighty Nybegynder
12. juni 2002 - 10:04 #2
borland (en lille dos tingest)
Avatar billede killer_bee Nybegynder
12. juni 2002 - 10:07 #3
kan det i VC++ .. har ik arbejdet med borland et par år.. sorry :o)
Avatar billede mouse-the-mighty Nybegynder
12. juni 2002 - 10:09 #4
hehe ja jeg skal også lige lære det
Avatar billede borrisholt Novice
12. juni 2002 - 10:57 #5
Så vil jeg anbefale dig at bruge en TStringList.

Noget alla det her (frit fra leveren)

TStringList *StringList = new TStringList();
StringList->LoadFromFile("hest.txt");
StringList->Add("1");
StringList->Add("2");
StringList->SaveToFile("Hest.txt"),
delete StringList;
Avatar billede soepro Nybegynder
12. juni 2002 - 11:06 #6
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
Avatar billede mouse-the-mighty Nybegynder
12. juni 2002 - 11:12 #7
uuuumm ja.......

jeg skal hvis lige bruge lidt tid på at finde ud af hvad der gør hvad og hvorfor.....

men bare rolig jeg skal nok vende tilbage og dele point ud...
hvis der er en mere simpel måde så sig endelig til
Avatar billede soepro Nybegynder
12. juni 2002 - 11:16 #8
mouse-the-mighty >> Der er altid en anden måde - om den er lettere er vist en smagsag.

Mit eksempel er ANSI C - Jens B's ANSI C++ (muligvis MVC eller BCB specifikt, det ved jeg ikke) så det er hip som hap.
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