Langage C exécution et erreur de segmentation

Fermé
mystique679 Messages postés 2 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 8 octobre 2006 - 7 oct. 2006 à 16:49
gaby10 Messages postés 445 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 3 février 2013 - 9 oct. 2006 à 13:31
Bonjour,

je suis débutante en c et j'ai un problème lors de l'éxécution de mon programme : cela m'affiche erreur de segmentation. J'ai essayé de chercher d'où cela pouvait venir, j'ai trouvé la ligne mais je ne vois pas comment régler le problème. s'il vous plaît aidez-moi!!

(je précise que mon programme permet d'afficher les données qui correspondant à un nom dans un fichier répertoire)

struct ligne
{
char *champ[8];
}

struct ligne ligne;

void
initialisation_struct( )
{
size_t cpt=1;
char c;
int i=0;
while((c=getchar( ) ) ! = '\n')
{
if ( c == '\t')
{
i=0;
cpt ++;
}
else
{
ligne.champ[cpt][i]=c; /* c'est cette ligne qui pose problème*/
i++;
}
}
}

void
affichernom( char *nom)
{
initialise_struct(ligne);
while ( ! strcoll (nom, ligne.champ[1])
initialise_struct(ligne);
printf("%s %s %s %s %s %s %s %s\n", nom, ligne.champ[2], ligne.champ[3], ligne.champ[4], ligne.champ[5], ligne.champ[6], ligne.champ[7], ligne.champ[8]);
}

Je sais que dans mon code il y a des erreurs ce n'est qu'une première version.... soyez indulgent s'il vous plaît.
Merci d'avance

2 réponses

medsour Messages postés 6 Date d'inscription dimanche 24 septembre 2006 Statut Membre Dernière intervention 7 octobre 2006
7 oct. 2006 à 18:24
Bonjour,
La 1ere chose que je dois te dire est de bien regarder les noms de fonctions: je vois un prototype "initialisation_struct" alors que lors de tonappel, tu mets "initialise_struct".

2ème poit: la fonction " initialisation_struct( )" ne prend pas de parametre alors qu'à l'appel tu lui passes un parametre.

Il faut corriger et fais signe si ta d'autres problème.
Courage.
0
mystique679 Messages postés 2 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 8 octobre 2006
8 oct. 2006 à 18:42
Bonjour,

je suis désolée mais en fait, les deux points sont juste des erreurs de frappe car je n'avais pas mon programme sous les yeux lorsque je l'ai tapé, désolé. Donc, avec la bonne écriture, le programme ne marche pas, j'ai toujours la même erreur et je ne vois pas d'où cela peut venir. (dans la bonne version je n'utilise pas d'arguments pour la fonction "initialisation_struct")
0
gaby10 Messages postés 445 Date d'inscription vendredi 25 novembre 2005 Statut Membre Dernière intervention 3 février 2013 57
9 oct. 2006 à 13:31
salut ,
d'abord analysons tes codes
struct ligne ligne
,il y a confussion tu declares ligne de type ligne ,lors de la compilation donc faudrait faire
struct Ligne ligne
. Qui s'est ?
size_t
il faut definir son type. Oh un oubli
char *champ[8]
, je ne pense pas que ce soit juste ,en c un nom de tableau est un pointeur, champ[8] signifie que champ pointe sur un tableau de 8 caracteres et *champ signifi de meme que champ pointe sur une chaine de caracteres mais de taille variable
cela irait si tu declares
char *champ;
et par la suite
ligne.champ[i]=c

verifie d'abord
0