Erreur de segmentation

Fermé
sindy5 Messages postés 65 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 18 juin 2011 - 26 oct. 2010 à 21:21
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 26 oct. 2010 à 23:27
Bonjour, mon probleme est l'erreur de segmentation pouvez vous m'aide?
merci d'avance .
voila mon prgramme

#include <stdio.h>

#include <stdlib.h>
int X[10],d[10];

float W[10],tita,y[10] ,u[10] ,som, lamda;

void chargerBaseDesX()

{

FILE* XI = fopen("XI.txt","r");



int i;



for(i=0; i<10; i++)

{

if (EOF == fscanf(XI,"%d",X+i)) // 'X+i' <=> '&X[i]'

break;

if (EOF == fscanf(XI,"%d",d+i))

break;

}



fclose(XI);

}

/*******************************************/



void chargerBaseDesW()

{

FILE* WI = fopen("WI.txt","r");



int i;



for(i=0; i<10; i++)

{

if (EOF == fscanf(WI,"%f",W+i))

break;

if (EOF == fscanf(WI,"%d",d+i))

break;

}



fclose(WI);

}
/********************************/
/* procedure charger base de DI*/

void chargerBaseDesD()

{

FILE* DI = fopen("DI.txt","r");



int i;



for(i=0; i<10; i++)

{

if (EOF == fscanf(DI,"%d",d+i))

break;

if (EOF == fscanf(DI,"%d",d+i))

break;

}



fclose(DI);

}

/****************************MAIN***************/

int main()

{

int i,t;

chargerBaseDesX();

chargerBaseDesW();
chargerBaseDesD();

for(i=0; i<10; i++)

{
printf( " \n les echantilions%d \n",i);

printf("%d\n",X[i]);

printf( "\n W%d \n",i);

printf("%f\n",W[i]);

printf("le sortie désiré%d\n",i);

printf("%d\n",d[i]);

if (d[i]==1)

{

printf ("impaire C1 \n");

}

else

{

if(d[i]==0)

printf("paire C2\n");



tita=0.2;

lamda=0.2;

som=0;



som=(som+(W[i]*X[i]));

printf("%f",som);



u[i]=( som-tita);

printf("U%d\n",i);

printf("%f\n", u[i]);



}



}




}

1 réponse

ydurce Messages postés 78 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 12 décembre 2010 18
26 oct. 2010 à 23:10
bonjour,

je ne vois pas d'erreur.
Une erreur de segmentation pourrait venir de l'impossibilité d'ouvrir un fichier (fichier qui n'existe pas), donc un FILE * retourné à NULL par une des fonctions fopen (et dans ce cas le fscan qui suit pourrait générer une erreur de seg).


cdlt
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
Modifié par loupius le 26/10/2010 à 23:30
Tout à fait, d'où la nécessité de toujours vérifier si l'ouverture s'est bien déroulée.
D'autre part, il est supposé qu'un fichier pourrait avoir moins de 10 valeurs: comment le sauras-tu dans ton 'main'? D'où la nécessité de conserver le nombre de valeurs lues ou d'initialiser au préalable le tableau avec, de préférence, une valeur significative.
Bonne soirée.
NB: Ton code est presque illisible -> il faut utiliser les balises de code (représentées par '<>'); d'autre part, tant de lignes vides nuit à la lisibilité. A lire: options de mise en page
0