|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre éclairé
![]() Développeur informatique Inscription : mai 2011 Messages : 206 ![]() |
Bonjour à tous,
J'ai besoin de vos lumières, car je cale! Voici la déclaration d'une structure: Code :
Code :
pl->fullname et pl->shortname sont des 'tableaux' de nentry pointeurs vers des chaines de caractères, pl->pos est un 'tableau' de nentry int Enfin, lorsque je remplis ma structure, je le fais (séquentiellement, offset allant de 0 à nentry-1) de la manière suivante: Code :
Quelqu'un at-t-il une idée? Mauvaise utilisation de ma part des pointeurs? Merci d'avance de votre aide. |
||||||
|
|
00
|
|
|
#2 | |
|
Membre émérite
![]() Inscription : février 2009 Messages : 568 ![]() |
Salut,
Pour moi, ta gestion des pointeurs est bonne. Je ne vois pas vraiment ton erreur à part cette ligne qui semble suspecte : Pourquoi le +1 ? Après je te conseille d'utiliser Valgrind qui, au contraire de gdb, ne demande pas de prise en main, tu fais simplement : Citation:
|
|
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() Développeur informatique Inscription : mai 2011 Messages : 206 ![]() |
@TrademarkMerci de ta réponse.
- Le +1: juste une valeur que j'incrémente en vue d'un futur affichage pour ne pas commencer par zéro - Valgrind: hélas, je suis sous windows.... - Je compile avec Borland bcc32 Merci à toi. |
|
|
00
|
|
|
#4 |
![]() ![]() Patrick GonordEnseignant Chercheur Inscription : juin 2005 Messages : 5 488 ![]() |
Je ne vois pas d'erreur dans ton code. L'erreur se situe sans doute dans le reste du programme.
Note : ce genre de choses est correct *(pl->fullname+offset)=... mais l'écriture pl->fullname[offset]=... est plus simple et plus facile à lire.
__________________
Publication : Concepts en C Mon avatar : Glenn Gould -------------------------------------------------------------------------- Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
|
|
|
10
|
|
|
#5 |
|
Membre éclairé
![]() Développeur informatique Inscription : mai 2011 Messages : 206 ![]() |
Je vous remerie à tous d'avoir pris le temps de me répondre.
Je vais donc revoir le reste du programme, puisque d'après vous le code montré ne présente pas d'erreur au niveau de la gestion des pointeurs. Cela doit donc certainement venir des appels ou de l'utilisation que j'en fais ensuite (zur alors @Diogène: serais-je un peu masochiste ? Mais tu as parfaitement raison, tu l'as si souvent écrit sur le forum: tab[1]=*(tab+1).... ![]() Encore merci, Edgar. |
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Développeur informatique Inscription : mai 2011 Messages : 206 ![]() |
La gestion des pointeurs était bonne. Seul hic: dans une autre fonction, je commençais par allouer à partir de 1, pas de zéro (un compteur mal placé, une ligne trop haut....). Vous pouvez imaginer le reste dès l'utilisation....
for(i=0;i<100;i++) printf("Merci\n"); |
|
|
00
|
|
|
#7 | |
|
Expert Confirmé Sénior
![]() ![]() Frédéric Ingénieur développement logiciels Inscription : février 2006 Messages : 3 533 ![]() |
Citation:
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit. Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant. Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation. Dr. Adrian Rogers, 1931 |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com