Langage C exécution et erreur de segmentation
mystique679
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
gaby10 Messages postés 445 Date d'inscription Statut Membre Dernière intervention -
gaby10 Messages postés 445 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Langage C exécution et erreur de segmentation
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
2 réponses
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.
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.
salut ,
d'abord analysons tes codes
cela irait si tu declares
verifie d'abord
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_til 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
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")