Rechercher : dans
Par :

Langage C exécution et erreur de segmentation

Dernière réponse le 9 oct 2006 à 13:31:33 mystique679, le 7 oct 2006 à 16:49:23 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « langage C exécution et erreur de segmentation » dans :
Langage C - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...
Langage C++ - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C++ sont typées, c'est-à-dire que les données contenues dans...
[Langage C] C/C++ Erreur de segmentation VoirQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...

1

medsour, le 7 oct 2006 à 18:24:15

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.

Répondre à medsour

2

mystique679, le 8 oct 2006 à 18:42: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")

Répondre à mystique679

3

 gaby10, le 9 oct 2006 à 13:31:33

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

Répondre à gaby10