Avatar billede trexy Nybegynder
25. januar 2004 - 16:19 Der er 7 kommentarer og
1 løsning

Find et tal i i en fil

jeg har en funktion som smider nogle tal ned i en fil.
Ligesom:
129
183
155
190
196
133

til sidst er det er checkciffer:
164
Antal linjer og størrelsen på chekcifferet variere
Er det muligt af få fat i chekcifferet og lægge det i en variabel?
Avatar billede trexy Nybegynder
25. januar 2004 - 16:20 #1
Jeg har set lidt på fscanf, men syntes ikke helt at kunne gennemskue det.
Avatar billede segmose Nybegynder
25. januar 2004 - 21:00 #2
// noget lignende det her.
FILE *fil = fopen("dinfil", "r");

while (!EOF(fil)) {
  fgets(fil, buf, sizeof(buf)-1);
  sscanf(buf,"%d", tal);
}

fclose(fil);
Avatar billede arne_v Ekspert
26. januar 2004 - 13:37 #3
Pæn kode: læse alle tallene - det sidste er checksummen

Mindre pæn kode: brug noget platforms specifikt fuske kode
og læs kun den sidste linie og konverter til tal.

(jeg mener jeg har noget kode liggende til det sidste)
Avatar billede trexy Nybegynder
26. januar 2004 - 16:15 #4
kunne du vise noget af det?
Avatar billede arne_v Ekspert
26. januar 2004 - 17:08 #5
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>

#define N 5120

static char retbuf[1024];

char *get_last_line(char *fnm)
{
  FILE *fp;
  struct stat st;
  char tmpbuf[N];
  int ix,len,bufix;
  stat(fnm, &st);
  len=st.st_size<N?st.st_size:N;
  ix=st.st_size-len;
  fp=fopen(fnm,"rb");
  fseek(fp,ix,SEEK_SET);
  fread(tmpbuf,len,1,fp);
  fclose(fp);
  bufix=len-1;
  while((tmpbuf[bufix]!='\n')&&(bufix>0)) bufix--;
  memcpy(retbuf,tmpbuf+bufix,len-bufix);
  retbuf[len-bufix]='\0';
  return retbuf;
}

int main(int argc,char *argv[])
{
  printf("last number = %d\n", atoi(get_last_line("z.z")));
  exit(0);
}
Avatar billede arne_v Ekspert
26. januar 2004 - 17:08 #6
Med en z.z indeholdende dine data giver den:

last number = 133
Avatar billede arne_v Ekspert
26. januar 2004 - 17:09 #7
Koden kan kun formodes at virke på Windows og diverse Unix inkl. Linux - ikke
på alle platforme.
Avatar billede trexy Nybegynder
26. januar 2004 - 20:33 #8
Så siger jeg mange tak.
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