Avatar billede kube Nybegynder
24. oktober 2002 - 17:35 Der er 8 kommentarer og
1 løsning

pointer fejl...tror jeg?

Hej Eksperter..
Jeg har læst lidt om at SEGMENTATION FAULT skulle skyldes at en pointer bliver brugt forkert. Og løsningen skulle være...

int i;
scanf ("%d", i);  /* should have used &i */

men jeg kan ikke stemme med min egen kode,  hvor jeg læser en int ind fra en fil og bagefter ligger int'en ind et char array. Hvorefter jeg benytter char arrayet til at åbne en anden fil.

char fil[5];
fscanf(fp, "%d", &tal);
sprintf(fil, "%d", tal);
fopen(fil, "r");

mvh kube

PS. link til hvor jeg har læst om svar jeg ikke kunne få til at passe:
http://www.tuxedo.org/~esr/jargon/html/entry/segmentation-fault.html
Avatar billede morten_grouleff Nybegynder
24. oktober 2002 - 17:51 #1
Kan du poste den nøjagite kode istedet for?

Er du sikker på at tallet er på højst 4 cifre?

Hvorfor ikke indlæse "tallet" som tekst og så bruge den buffer til at åbne fiken med?

char filnavn[MAXFILENAME];
if (fscanf(fp, "%s", filnavn) == 1) {
  fp2 = fopen(filnavn, "r");
}
Avatar billede arne_v Ekspert
24. oktober 2002 - 18:28 #2
Hvad er problemet med de 4 linier kode ?
Avatar billede kube Nybegynder
24. oktober 2002 - 18:34 #3
der opstår en segmentation fault hvis kører programmet, men hvis jeg sætter en konstant ind istedet for "tal" som jeg indlæser fra en fil så virker det. men jeg vil gerne have den skal indlæse tal fra filen..
Avatar billede kube Nybegynder
24. oktober 2002 - 18:35 #4
og ja det er kun 4 cifre..
nemlig 1001
Avatar billede arne_v Ekspert
24. oktober 2002 - 18:36 #5
Hvis filen som fp er fil pointer til indeholder
et validt tal med maksimalt 4 cifre, så kan jeg ikke
forstå det.
Avatar billede morten_grouleff Nybegynder
24. oktober 2002 - 18:37 #6
Okay, hvis det er hele koden, så mangler du at åbne filen, som "fp" skulle pege på. Det ville også give en SEGV, da fscanf på NULL også giver SEGV
Avatar billede kube Nybegynder
24. oktober 2002 - 18:42 #7
jeg mener den åbner fint da jeg godt kan udskrive tallet?
printf("%d", tal);
Avatar billede kube Nybegynder
24. oktober 2002 - 18:45 #8
jeg ved virkelig ikke hvorfor for mig ser det også rigtigt ud men det virker ikke i praksis. Det er især mærkeligt når jeg godt kan skrive tallet ud?
Avatar billede kube Nybegynder
24. oktober 2002 - 18:49 #9
Der er ikke fejl i koden men i min hjerne....jeg havde ikke oprettet nogen fil med samme navn som tallet!!DOOOH!
takker ellers...
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