Affichage d'un resultat char?
Résolu
tenohthree
Messages postés
55
Statut
Membre
-
loupius Messages postés 789 Statut Membre -
loupius Messages postés 789 Statut Membre -
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.