Erreur de segmentation

sindy5 Messages postés 78 Statut Membre -  
loupius Messages postés 789 Statut Membre -
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 81 Statut Membre 18
 
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 789 Statut Membre 148
 
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