Newsgroup: it.comp.lang.c
Titolo: segmentation fault su int main(void)?!?

Salve provando e riprovando ho capito che il programma va in crash 
appena si arriva alla riga
int main(void)
{
questo è quello che mi dice gdb:
Program received signal SIGSEGV, Segmentation fault.
0x0019bed7 in _IO_vfscanf_internal (s=0x350030, format=0x12bff4 
",\277\001",
     argptr=0xb7fffb30 "", errp=0xb7fffb10) at vfscanf.c:1803
1803	vfscanf.c: Nessun file o directory.
	in vfscanf.c
(gdb) list
1798	in vfscanf.c
Ho incluso gli header necessari, non capisco proprio cosa succede
questa la parte di codice pre fault
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define FALSE 0
#define TRUE 1
int fitness_calc(int, int);
float prob_selezione_calc(float, float);
//dimensione immagine
const int N=3;				 	// numero colori base
const int INDIVIDUI = 100;		// popolazione iniziale
const int GENERAZIONI = 1000;	// generazioni da evolvere
const int GENITORI = 10;		// 10 genitori per generare 20 figli
const int MUTANTI = 15;
const float PROB_MUTAZIONE = 0.1;		// probabilità di mutazione
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define FALSE 0
#define TRUE 1
int fitness_calc(int, int);
float prob_selezione_calc(float, float);
const int N=3;			// numero colori base
const int INDIVIDUI = 100;	// popolazione iniziale
const int GENERAZIONI = 1000;	// generazioni da evolvere
const int GENITORI = 10;	// 10 genitori per generare 20 figli
const int MUTANTI = 15;
const float PROB_MUTAZIONE = 0.1; // probabilità di mutazione
int main(void)
{
suggerimenti?

posta anche il codice iniziale del tuo main, perlomeno le 
inizializzazioni delle variabili locali 

 inizializzazioni delle variabili locali
Lo avevo inserito, in ogni casso prima del main c'e' solo:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define FALSE 0
#define TRUE 1
int fitness_calc(int, int);
float prob_selezione_calc(float, float);
const int N=3;            // numero colori base
const int INDIVIDUI = 100;    // popolazione iniziale
const int GENERAZIONI = 1000;    // generazioni da evolvere
const int GENITORI = 10;    // 10 genitori per generare 20 figli
const int MUTANTI = 15;
const float PROB_MUTAZIONE = 0.1; // probabilità di mutazione
int main(void)
{ ....
return 0;	
}


Scusate :)
ecco:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define FALSE 0
#define TRUE 1
int fitness_calc(int, int);
float prob_selezione_calc(float, float);
//dimensione immagine
const int N=3;				 	// numero colori base
const int INDIVIDUI = 100;		// popolazione iniziale
const int GENERAZIONI = 1000;	// generazioni da evolvere
const int GENITORI = 10;		// 10 genitori per generare 20 figli
const int MUTANTI = 15;
const float PROB_MUTAZIONE = 0.1;		// probabilità di mutazione
int main(void)
//int main(int argc, char** argv)
{
	FILE *fin, *fout, *fdati;
 
	struct genoma
	{
		int *dna;
		float fitness;
		int genitore;
		int flag;
		float prob_selezione;
		float prob_mutazione;
	};
 
	int col,rig,i,j;
	int max_color;
//	int contatore=0;
	int g;
	int best_fitness;
	int pos,pos1,pos2;
	int lung_dna=0;
 
	float tutti_fitness;
	float valore_selezione;
	float prob_mutazione;
 
	struct genoma *popolazione;
	struct genoma genitori[GENITORI];
	struct genoma figli[GENITORI];
	struct genoma best;
	struct genoma buff;
 
	int *immagine_in;
	char intestazione[2];
 
	srand(time(NULL));
 
	if(!(fdati=fopen("dati.dat","w")))
	{

da ulteriori investigazioni il termini del programm avviene in quest 
istruzione:
 >
 >		while(!feof(fin))
 >		{
 >			fscanf(fin,"%d\n",NULL);
 >			lung_dna++;
 >		}
 >
corretto con un fscanf(fin,"%d\n",&temp);
Non e' possible leggere un dato e non metterlo in nessuna variabile?
mi serve per contare il numero di righe su un file testo e poi allocare 
la memoria che mi serve per caricare i dati in ram

 la memoria che mi serve per caricare i dati in ram
In quel caso dovresti anche contare il numero di caratteri per riga?

 In quel caso dovresti anche contare il numero di caratteri per riga?
No, devo leggere dei numeri, ogni riga contiene un valore da 0 a 255. ma 
li carico piu' avanti con fscanf(fin,"%d\n",variabile);