Affichage d'un resultat char?
Résolu
tenohthree
Messages postés
50
Date d'inscription
Statut
Membre
Dernière intervention
-
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
comment afficher la variable de sortie "lettre" qui est de type chaine de caractère ?
voila le code :
en plus peut on utiliser
Merci d'avance.
comment afficher la variable de sortie "lettre" qui est de type chaine de caractère ?
voila le code :
#include<stdio.h> #include<string.h> void main() { int centaine, dizaine, unite, reste, y,i,chiffre; char *lettre ; strcpy(lettre, ""); reste = chiffre; printf("donner le chiffre"); scanf("%d",&chiffre); for(i=1000000000; i>=1; i/=1000) { y = reste/i; if(y!=0) { centaine = y/100; dizaine = (y - centaine*100)/10; unite = y-(centaine*100)-(dizaine*10); switch(centaine) { case 0: break; case 1: strcat(lettre,"cent "); break; case 2: if((dizaine == 0)&&(unite == 0)) strcat(lettre,"deux cents "); else strcat(lettre,"deux cent "); break; case 3: if((dizaine == 0)&&(unite == 0)) strcat(lettre,"trois cents "); else strcat(lettre,"trois cent "); break; case 4: if((dizaine == 0)&&(unite == 0)) strcat(lettre,"quatre cents "); else strcat(lettre,"quatre cent "); break; case 5: if((dizaine == 0)&&(unite == 0)) strcat(lettre,"cinq cents "); else strcat(lettre,"cinq cent "); break; case 6: if((dizaine == 0)&&(unite == 0)) strcat(lettre,"six cents "); else strcat(lettre,"six cent "); break; case 7: if((dizaine == 0)&&(unite == 0)) strcat(lettre,"sept cents "); else strcat(lettre,"sept cent "); break; case 8: if((dizaine == 0)&&(unite == 0)) strcat(lettre,"huit cents "); else strcat(lettre,"huit cent "); break; case 9: if((dizaine == 0)&&(unite == 0)) strcat(lettre,"neuf cents "); else strcat(lettre,"neuf cent "); }// endSwitch(centaine) switch(dizaine) { case 0: break; case 1: if(unite=0) strcat(lettre,"dix"); break; case 2: strcat(lettre,"vingt "); break; case 3: strcat(lettre,"trente "); break; case 4: strcat(lettre,"quarante "); break; case 5: strcat(lettre,"cinquante "); break; case 6: strcat(lettre,"soixante "); break; case 7: strcat (lettre,"soixante-dix "); break; case 8: strcat(lettre,"quatre-vingt "); break; case 9: strcat(lettre,"quatre-vingt-dix "); } // endSwitch(dizaine) switch(unite) { case 0: break; case 1: if(dizaine = 1) strcat(lettre,"onze "); else strcat(lettre,"un "); break; case 2: if(dizaine = 1) strcat(lettre,"douze "); else strcat(lettre,"deux "); break; case 3: if(dizaine = 1) strcat(lettre,"treize "); else strcat(lettre,"trois "); break; case 4: if(dizaine = 1) strcat(lettre,"quatorze "); else strcat(lettre,"quatre "); break; case 5: if(dizaine = 1) strcat(lettre,"quinze "); else strcat(lettre,"cinq "); break; case 6: if(dizaine = 1) strcat(lettre,"seize "); else strcat(lettre,"six "); break; case 7: if(dizaine = 1) strcat(lettre,"dix-sept "); else strcat(lettre,"sept "); break; case 8: if(dizaine = 1) strcat(lettre,"dix-huit "); else strcat(lettre,"huit "); break; case 9: if(dizaine = 1) strcat(lettre,"dix-neuf "); else strcat(lettre,"neuf "); } // endSwitch(unite) switch (i) { case 1000000000: if(y>1) strcat(lettre,"milliards "); else strcat(lettre,"milliard "); break; case 1000000: if(y>1) strcat(lettre,"millions "); else strcat(lettre,"million "); break; case 1000: strcat(lettre,"mille "); } } // end if(y!=0) reste -= y*i; } // end for //if(strlen(lettre)==0) strcpy(lettre,"zero"); printf("le nobre est %s\n ",lettre); }
en plus peut on utiliser
char lettre;au lieu de
char *lettre;?
Merci d'avance.
A voir également:
- Affichage d'un resultat char?
- Resultat foot - Télécharger - Vie quotidienne
- Affichage double ecran - Guide
- Lexer resultat - Télécharger - Sport
- Windows 11 affichage classique - Guide
- Problème affichage fenêtre windows 10 - Guide
4 réponses
Il n'y a pas de remplacement à faire. Déclarer 'char* lettre' ne fait que déclarer un emplacement où mettre une adresse qui contiendra des 'char', mais il est où l'emplacement ? Nulle part (ou plutôt n'importe où) et c'est là le problème. Il faut donc créer un emplacement et donner l'adresse de cet emplacement à lettre. Cela s'appelle une allocation mémoire. Par exemple:
en plus je vous informe qu'il n'ay pas d'affichage on utilisant
printf("le nombre est %s\n ",lettre);
C'est sans doute parce qu'il n'y a rien dans lettre. Si tu as pensé y mettre quelquechose, il n'y a plus rien car comme aucun emplacement n'avait été réservé, là où tu avais mis quelquechose l'emplacement a été utilisé par autre chose qui a donc écrasé ce que tu y avais mis. Est-ce clair ?
Bonne réflexion.
char* lettre = malloc(taille*sizeof(char));'taille' étant la longueur maxi de la chaîne de caractères qui pourra y être placée; en fait 'taille = longueur maxi + 1' car la chaine doit se terminer par un caractère de fin de chaîne ('\0').
en plus je vous informe qu'il n'ay pas d'affichage on utilisant
printf("le nombre est %s\n ",lettre);
C'est sans doute parce qu'il n'y a rien dans lettre. Si tu as pensé y mettre quelquechose, il n'y a plus rien car comme aucun emplacement n'avait été réservé, là où tu avais mis quelquechose l'emplacement a été utilisé par autre chose qui a donc écrasé ce que tu y avais mis. Est-ce clair ?
Bonne réflexion.
char *lettre ;
strcpy(lettre, "");
A la lecture de ces deux lignes, on sent le 'segment fault' qui pointe son nez ;-)
A corriger d'urgence !
comment afficher la variable de sortie "lettre" qui est de type chaine de caractère ?
Mais tu as donné la réponse à la fin;
printf("le nobre est %s\n ",lettre);
en plus peut on utiliser 'char lettre;' au lieu de 'char *lettre;'
Oh que nenni !
'char lettre' est une variable de type 'char', c'est à dire qu'en mémoire sera réservé un emplacement dans lequel on pourra mettre un 'char', alors que 'char* lettre' est une variable de type 'pointeur vers char', c'est-à-dire qu'en mémoire sera réservé un emplacement dans lequel on pourra mettre une adresse supposée pointer vers un emplacement supposé contenir des 'char'.
Bonne réflexion.
strcpy(lettre, "");
A la lecture de ces deux lignes, on sent le 'segment fault' qui pointe son nez ;-)
A corriger d'urgence !
comment afficher la variable de sortie "lettre" qui est de type chaine de caractère ?
Mais tu as donné la réponse à la fin;
printf("le nobre est %s\n ",lettre);
en plus peut on utiliser 'char lettre;' au lieu de 'char *lettre;'
Oh que nenni !
'char lettre' est une variable de type 'char', c'est à dire qu'en mémoire sera réservé un emplacement dans lequel on pourra mettre un 'char', alors que 'char* lettre' est une variable de type 'pointeur vers char', c'est-à-dire qu'en mémoire sera réservé un emplacement dans lequel on pourra mettre une adresse supposée pointer vers un emplacement supposé contenir des 'char'.
Bonne réflexion.