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?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
25. januar 2004 - 16:20
#1
Jeg har set lidt på fscanf, men syntes ikke helt at kunne gennemskue det.
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);
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)
26. januar 2004 - 16:15
#4
kunne du vise noget af det?
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); }
26. januar 2004 - 17:08
#6
Med en z.z indeholdende dine data giver den: last number = 133
26. januar 2004 - 17:09
#7
Koden kan kun formodes at virke på Windows og diverse Unix inkl. Linux - ikke på alle platforme.
26. januar 2004 - 20:33
#8
Så siger jeg mange tak.
Kurser inden for grundlæggende programmering