Avatar billede mikl-dk Nybegynder
03. september 2002 - 18:28 Der er 1 løsning

Skrive til/åbne fil

Hej Eksperter!

Jeg er ved at lave et program til primtalsfaktorering, og jeg har derfor lavet noget kode til at finde en masse primtal. Jeg mangler noget kode til at skrive disse til en fil. Derefter skal jeg også bruge noget kode til at læse selv samme fils indhold ind i det program, der arbejder med primtalsfaktorering. Jeg søger også funktioner, der kan samle/splitte en string til og fra et array (i php hedder de explode og implode)...

Det skal siges, at jeg laver disse programmer i et text-baseret layout (dvs. uden GUI). Jeg bruger Borland C++ Builder 5 Enterprise Edition.

Kræves ydeligere forklaring?

/mikl.dk
Avatar billede soepro Nybegynder
04. september 2002 - 09:28 #1
Ad 1) Læse/skrive til en fil.
Jeg antager at det er integer du har behov for at gemme. For nemheds skyld vil jeg forslå dig at lave en fil svarende til din primtals tabel, som du f.eks. definerer:

int primes[maxPrimes];

Den kan du så læse/skrive til/fra en fil sådan her:

#include <stdio.h>
int main(void)
{
  FILE *primeFile;

  if ((primeFile = fopen("C:\\primes.fil", "r+b")) == NULL)
  { // Primtals fil ikke fundet - afslut med fejl.
    return -1;
  };

  // Læs tabel.
  if (fread(&primes, sizeof(primes), 1, primeFile) != 1)
  { // FEJL
    fclose(primeFile);
    return -1;
  };

  // Behandl din primes tabel.
  :
  :

  // Skriv den tilbage til filen.
  if (fwrite(%primes, sizeof(primes), 1, primeFile) != 1)
  { // FEJL
    fclose(primeFile);
    return -1;
  };

  // Luk filen og afslut normalt.
  fclose(primeFile);
  return 0;
}

Ad 2) Split en streng
Hvordan splitte ? Hvad indeholder stengen ? hvis det er "ord" adskildt af et eller andet tegn (f.eks. semikolon ';') kan du f.eks. bruge strtok() funktionen:

#include <string.h>
#include <conio.h>

int main(void)
{
  char  orgString = "Denne streng indeholder en tekst på 8 ord.";
  char *ptrWords[20];
  int  nbrWords, idx;
  char  tmpStr[257];

  strncpy(tmpStr, orgString, sizeof(tmpStr)-1);
  ptrWords[nbrWords = 0] = strtok(tmpStr, ";");
  while (ptrWords[nbrWords] != NULL)
    ptrWords[++nbrWords] = strtok(NULL, ";");

  cprintf("Teksten er:\r\n%s", orgString);
  for (idx = 0; idx < nbrWords; idx++)
    cprintf("Ord nr. %d er: %s\r\n", idx+1, ptrWords[idx]);
  cprintf("Der er %d ord i alt.\r\n", nbrWords);
  return 0;
}
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