View Full Version : [C] segmentation fault
beppegrillo
22-11-2004, 16:54
#include <stdio.h>
#include <stdlib.h>
#define FILE2 "prova.txt"
int main (int argc , char **argv) {
FILE *fp;
struct lista {
int value;
} *list_p;
if ((fp=fopen(FILE2,"r")) != NULL)
fscanf(fp,"%d", &(list_p->value));
printf("%d", list_p->value);
system("Pause");
}
Come mai mi và in segmentation fault??:confused:
Ziosilvio
22-11-2004, 17:20
Originariamente inviato da beppegrillo
int main (int argc , char **argv) {
FILE *fp;
struct lista {
int value;
} *list_p;
if ((fp=fopen(FILE2,"r")) != NULL)
fscanf(fp,"%d", &(list_p->value));
printf("%d", list_p->value);
list_p e' un puntatore non inizializzato, che puo' avere qualunque valore.
Se riesci ad aprire il file, scrivi roba a caso su una zona di memoria a caso --- il che, di solito, causa un segmentation fault.
A proposito: se non riesci ad aprire il file, la printf viene eseguita.
beppegrillo
22-11-2004, 17:25
Originariamente inviato da Ziosilvio
list_p e' un puntatore non inizializzato, che puo' avere qualunque valore.
Se riesci ad aprire il file, scrivi roba a caso su una zona di memoria a caso --- il che, di solito, causa un segmentation fault.
A proposito: se non riesci ad aprire il file, la printf viene eseguita.
Si è vero fai conto che ci sia la parentesi graffa dopo l'if e dopo il printf.
Ma il puntatore non punta alla struttura? Non è già inizializzato all'indirizzo della struttura?
ilsensine
22-11-2004, 18:15
No; hai dichiarato e allocato un puntatore, ma nessuna struttura a cui farlo puntare. Quindi punta a caso, come ogni buona variabile non inizializzata ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.