1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static void purger(char *chaine) //On cherche le caractère \n (touche entrée) et on le supprime.
{
char *p = strchr(chaine, '\n');
if (p)
{
*p = 0;
}
}
int main()
{
char *entrante, *apres, *motcherche, *motremplace, *etape1, *etape2, *original;
// Changer la valeur du <# si on ajoute des éléments au tableau.
char *motcherchetemp [] = {
"50","49","48","47","46","45","44","43","42","41",
"40","39","38","37","36","35","34","33","32","31",
"30","29","28","27","26","25","24","23","22","21",
"20","19","18","17","16","15","14","13","12","11",
"10","9","8","7","6","5","4","3","2","1","0","otcobre"};
char *motremplacetemp [] = {
"cinquante","quarante-neuf","quarante-huit","quarante-sept","quarante-six","quarante-cinq","quarante-quatre","quarante-trois","quarante-deux","quarante-et-un",
"quarante","trente-neuf","trente-huit","trente-sept","trente-six","trente-cinq","trente-quatre","trente-trois","trente-deux","trente-et-un",
"trente","vingt-neuf","vingt-huit","vingt-sept","vingt-six","vingt-cinq","vingt-quatre","vingt-trois","vingt-deux","vingt-et-un",
"vingt","dix-neuf","dix-huit","dix-sept","seize","quinze","quatorze","treize","douze","onze",
"dix","neuf","huit","sept","six","cinq","quatre","trois","deux","un","zero","octobre"};
entrante = (char *)malloc(sizeof(char)*2048);
original = (char *)malloc(sizeof(char)*2048);
apres = (char *)malloc(sizeof(char)*2048);
motcherche = (char *)malloc(sizeof(char)*1024);
motremplace = (char *)malloc(sizeof(char)*1024);
etape1 = (char *)malloc(sizeof(char)*2048);
etape2 = (char *)malloc(sizeof(char)*2048);
size_t LongApres, LongTotal, LongAvant, Pos;
int LongMotCherche;
//char espace [] = " ";
int compteur = 1;
int x = 0;
int condi1 = 1;
if (entrante == NULL || apres == NULL || motcherche == NULL || motremplace == NULL || etape1 == NULL || etape2 == NULL)
{
puts ("Allocation impossible ! Banzai !");
exit(1);
}
puts("Saisissez quelque chose d'un peu long.\nLe programme remplacera les chiffres arabes par des chiffres en lettres :");
puts("\n");
fgets(entrante, 2047, stdin);
purger(entrante);
strcpy(original, entrante);
// Début du code pour changer les chiffres arabes en chiffres en lettres.
while (condi1 == 1 && x<52) // La valeur a laquelle est comparée x doit être égale au nombre d'éléments des tableaux.
{
motcherche = *(motcherchetemp+x);
apres = strstr(entrante, motcherche);
if (apres != NULL)
{
LongMotCherche = strlen(motcherche);
LongApres = strlen(apres);
LongTotal = strlen(entrante);
LongAvant = LongTotal - LongApres;
Pos = LongAvant+1;
puts("\n");
printf("Passage no - %d", compteur);
puts("\n");
strcpy(etape1, ""); //Pourquoi cela ne fonctionne pas avec strcpy quand LongAvant = 2 4 5 ou 6.
//memset (etape1, 0, 2047); //Avec cette ligne memset, cela fonctionne très bien dans tous les cas.
printf("Texte dans la variable 'etape1' avant memcpy :\n\"%s\"\n", etape1);
puts("\n");
memcpy(etape1, entrante, LongAvant);
printf("Texte dans la variable 'etape1' apres memcpy :\n\"%s\"\n", etape1);
puts("\n");
puts("\n");
printf("Texte original :\n\"%s\"\n", entrante);
puts("\n");
printf("La taille du motcherche ( %s ) est = %d.", motcherche, sizeof(motcherche));
puts("\n");
printf("Longueur du mot cherche stocke dans la variable 'LongMotChr' : %d", LongMotCherche);
puts("\n");
printf("Texte dans la variable apres :\n\"%s\"\n", apres);
puts("\n");
printf("Texte dans la variable apres+2 :\n\"%s\"\n", apres+2);
puts("\n");
printf("Longueur du texte stocke dans la variable 'LongTotal' :\n\"%d\"\n", LongTotal);
puts("\n");
printf("Longueur du texte stocke dans la variable 'apres' :\n\"%d\"\n", LongApres);
puts("\n");
printf("Longueur du texte stocke dans la variable 'LongAvant' :\n\"%d\"\n", LongAvant);
puts("\n");
printf("Position du debut de la chaine recherche stocke dans la variable 'Pos' :\n\"%d\"\n", Pos);
puts("\n");
printf("Texte dans la variable 'etape1' avant les ajouts :\n\"%s\"\n", etape1);
puts("\n");
motremplace = motcherche;
motremplace = *(motremplacetemp+x);
strcat (etape1, motremplace);
printf("Texte dans la variable 'etape1' apres les ajouts :\n\"%s\"\n", etape1);
puts("\n");
memset (etape2, 0, 2047);
strcpy(etape2, apres+LongMotCherche);
printf("Texte dans la variable (etape2 = apres+3) :\n\"%s\"\n", etape2);
puts("\n");
strcat (etape1, etape2);
printf("Resultat final obtenu par 'strcat(etape1, etape2)':\n\"%s\"\n", etape1);
puts("\n");
printf("Valeur de motcherche a la fin du processus:\n\"%s\"\n", motcherche);
memset (entrante, 0, 2047);
strcpy(entrante, etape1);
memset (etape1, 0, 2047);
puts("\n");
//getchar();
printf("Valeur de entrante apres 'strcpy(entrante, etape1)' = \"%s\"\n", entrante);
puts("\n");
compteur++;
condi1 = 1;
}
else
{
x++;
}
}
puts("\n");
printf("Texte original : \"%s\"", original);
puts("\n");
puts("\n");
printf("Resultat apres conversion des chiffres en lettres : \"%s\"", entrante);
puts("\n");
return *entrante;
} |
Partager