Probleme d'affichage de caracteres en C
Résolu
oupsman
Messages postés
319
Statut
Membre
-
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
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:
- Probleme d'affichage de caracteres en C
- Caractères spéciaux - Guide
- Caractères ascii - Guide
- Affichage double ecran - Guide
- Caracteres speciaux - Guide
- Caractères spéciaux mac - Guide
6 réponses
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..
cet affichage que tu as eu est d'habitude due à ces petites choses..
nom et prenom ne pointent pas sur les chaines correctes
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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-(
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-(
ç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.
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.
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