Probleme d'affichage de caracteres en C

Résolu
oupsman Messages postés 319 Statut Membre -  
oupsman Messages postés 319 Statut Membre -
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 352 Statut Membre 42
 
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 319 Statut Membre 10
 
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 19023 Date d'inscription   Statut Contributeur Dernière intervention   5 640
 
nom et prenom ne pointent pas sur les chaines correctes
0
oupsman Messages postés 319 Statut Membre 10
 
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 352 Statut Membre 42
 
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 352 Statut Membre 42
 
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 352 Statut Membre 42
 
alors t'en est ou là?
0
oupsman Messages postés 319 Statut Membre 10
 
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 319 Statut Membre 10
 
ç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