Aller au contenu

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

Aide programmation C++


Messages recommandés

APZO Membre 207 messages
Forumeur activiste‚
Posté(e)

Bonsoir à toutes et à tous,

j'ai une erreur de segmentation lors de l’exécution d'un programme et j'aimerais que vous m'aidiez à la comprendre. Le principe est simple, je lis chaque caractère d'un fichier texte et je dois compter la fréquence de chaque lettre (combien de fois elles sont présentes). Notre professeur nous a imposé d'utiliser la fonction getc dont le profil est le suivant : int getc(FILE *fichier)

cette fonction retourne le caractère suivant lu. Donc voici le bout de code concerné par l'erreur :

post-140756-0-65030800-1330367112_thumb.jpg

après avoir effectué quelques tests, c'est la condition de la boucle qui ne va pas car j'ai essayé de créer un compteur et de faire la boucle genre 4 fois et ça a marché. Et quand je remets la condition ch != EOF ça remet l'erreur de segmentation.

Notre professeur nous a dit que getc retournait EOF quand on arrive à la fin du fichier.

Partager ce message


Lien à poster
Partager sur d’autres sites
Annonces
Maintenant
Lapinkiller Membre 10148 messages
Le Dieu Lapin‚ 32ans
Posté(e)

Bonjour

souvent une erreur de segmentation c'est un problèmes de droits d'accès ;)

Partager ce message


Lien à poster
Partager sur d’autres sites
APZO Membre 207 messages
Forumeur activiste‚
Posté(e)

De quels droits d'accès tu parles ?

Partager ce message


Lien à poster
Partager sur d’autres sites
Lapinkiller Membre 10148 messages
Le Dieu Lapin‚ 32ans
Posté(e)

c'est pas forcément ca c'est juste une piste...

ton tableau est il suffisament grand ?

(ca fait longtemps que j'ai pas touché à du c++ ... )

Partager ce message


Lien à poster
Partager sur d’autres sites
APZO Membre 207 messages
Forumeur activiste‚
Posté(e)

Ok. Non ça vient pas de ça, mon tableau est suffisamment grand.

Partager ce message


Lien à poster
Partager sur d’autres sites
miq75 Membre 2862 messages
90°‚ 44ans
Posté(e)

Ben, regarde ce que fais ta boucle :

elle lit un caractère, puis elle incrémente le tableau de ce caractère, puis elle teste si ce caractère est une fin de fichier.

Donc si elle lit une fin de fichier, elle incrémente décompte du caractère correspondant (renvoyé par index(EOF) ?!? ) avant de s'arrêter ?

Dit moi, ta fonction index, elle ferait pas un truc du genre return ch-'a'; pour renvoyer le numéro de la lettre dans l'alphabet ? EOF, tu le place ou dans l'alphabet ? Du coup, il te renvoie un nombre négatif....

spoiler:

Faut que tu mette ton tab[index(ch)]++; une seule fois dans ta fonction, juste après le while, et avant la lecture du caractère suivant.

Partager ce message


Lien à poster
Partager sur d’autres sites
APZO Membre 207 messages
Forumeur activiste‚
Posté(e)

Ah oui effectivement ^^, j'ai modifié ça mais ça refait l'erreur de segmentation :

post-140756-0-25124200-1330369609_thumb.jpg

PS : j'ai trouvé le problème, mais je le comprends pas... c'est parce que le texte inclut dans mon fichier se termine par un point. Et quand j'enlève le point final, ça marche :o

Partager ce message


Lien à poster
Partager sur d’autres sites
miq75 Membre 2862 messages
90°‚ 44ans
Posté(e)

que te renvoie index('.') ? Au hasard un nombre qui n'est pas un indice possible dans ton tableau ?

Partager ce message


Lien à poster
Partager sur d’autres sites
APZO Membre 207 messages
Forumeur activiste‚
Posté(e)

Le hasard fait bien les choses.. effectivement, c'est vraiment stupide de ma part... merci pour l'aide.

Partager ce message


Lien à poster
Partager sur d’autres sites
Annonces
Maintenant

  • Populaires actuellement

  • Upload d'images

    • Uploadfr est un service proposé par ForumFr, simple et gratuit, vous permettant d'héberger vos images. Si vous rencontrez le moindre soucis sur le forum, pour vos images, vous pouvez l'utiliser.
  • Nous vous invitons à découvrir les centaines de milliers de sujets existants sur LE Forum - n'hésitez pas à y participer ! L'inscription, gratuite, permet également de diminuer le nombre d'affichage de publicités. Pour cela, inscrivez-vous, ou connectez-vous.

    Bienvenue sur Forum Fr !

  • FFr Mag' 2.0

×