Probleme d'affichage de caracteres en C

Résolu/Fermé
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 - 22 sept. 2008 à 17:13
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 - 23 sept. 2008 à 12:54
Bonjour,

Voici un bref résumé de mon programme

/**structure utilisée**/
typedef struct client{
int num_chambre;
char * nom;
char * prenom;
struct client * precedent;
struct client * suivant;
}Client;


/*protptypes de deux autres fonctions déjà conçues*/
client * Recuperation_Données(char * nom_fichier);
/*Cette fonction ouvre le fichier dont le nom est passé en paramètre*/
/*c'est un fichier texte qui renferme la sauvegarde des données de tous les clients*/
/*la focntion recupères les données et les affecte dans les champs respectifs d'un client, ensuite l'adresse de ce client sera retourné par la focntion*/

void Affiche_Client(Client CTL);
/*affiche les champs du client CLT passé en paramètre*/

/*Voici la fonction principale*/

int main (void){
déclaration des variables

....
allocations en mémoire... etc
........

MonClient = Recuperation_Données("nom_du_fichier");

Affiche_Client(MonClient);

return 0;
}

Voici mon prblème : lors de l'affichage, les données de la liste , il affiche des caractères proches du chinois incompréhensibles !!!

Par exemple il affiche : 234 �����ȸ��s�ڸ����������
Bien sûr, 234 représente le numéro de chambre mais le nom et le prénom du client est illisible
Pourtant avant d'utiliser la fonction Recuperation_Données("nom_fichier"), j'affiche chaque contenu du champ et il n'y a pas de problème.

Quelqu'un aurait une idée SVP ? Merci d'avance
A voir également:

6 réponses

mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
22 sept. 2008 à 17:20
bah je crois que c du à ton scanf!! genre px etre que ta confondu %s av %d et vise versa!! si c 1e chaine de caratère tu fais %s(ou tu px aussi puts(la variable)) si c 1 chiffre c %d
cet affichage que tu as eu est d'habitude due à ces petites choses..
0
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 10
22 sept. 2008 à 17:27
salut,

merci pour ta réponse mais j'ai bien vérifié, c'est pas ça.

En fat quand j'affiche les données des champs du client à part, ça marche parfaitement.

Le problème commence dès lors que je récupère le client dans un autre pointeur de client et quand je réaffiche le contenu de ce dernier
0
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
22 sept. 2008 à 17:27
nom et prenom ne pointent pas sur les chaines correctes
0
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 10
22 sept. 2008 à 17:32
j'y ai pensé aussi mais malheureusement c'est pas ça non plus.

Je réexplique, le client a bien pu récupéré les champs correspondants (pointe bien vers nom et prénom).

c'est après avoir transférer ce client crée dans le pointeur MonClient que le problème d'affichage persiste
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
22 sept. 2008 à 17:38
bah tu fais l'execution pas à pas et tu verras ou réside le pb..la touche f7 sinn f8
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
22 sept. 2008 à 17:41
en fait ne serais ce un & qui cause ce pb?c a d tu n'affectes po l'adresse o pointeur..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
22 sept. 2008 à 18:33
alors t'en est ou là?
0
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 10
22 sept. 2008 à 19:40
Toujours bloqué,

en fait j'essaye de faire un rechargement de données, la réciproque de la sauvegarde dans un fichier.

Etant donné qu'il y a une dizaine de pointeurs, on ne sait plus qui est-ce qui pointe qui.

Dès qu'on sort d'une fonction, il y a dépilement et les pointeurs qui étaient valident deviennent n'importe quoi et j'arrive pas à le récupérer ........ 8-( 8-( 8-(
0
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 10
23 sept. 2008 à 12:54
ça y est c'est bon, en fait dans une de mes affectations j'ai affectée directement l'adresse d'une chaine de caractere.

La solution était de faire une copie du contenu par la fonction strcpy(...,...);

Autrement dit, Client.nom = nom; est erroné. Fallait faire strcpy(Client.nom, nom);

Voilà, ça marche.
0