Optimise la normalisation avec une table de conversion

This commit is contained in:
rabot
2026-10-07 15:43:48 +02:00
parent 2abe610d58
commit 19ad9b7b33
5 changed files with 427 additions and 18 deletions
+18 -17
View File
@@ -85,18 +85,6 @@ void ajouter(char *dest, const char *src, size_t *position)
*position = fin;
}
char en_minuscule(char c)
{
if (c >= 'A' && c <= 'Z')
return c - 'A' + 'a';
return c;
}
int est_lettre(char c)
{
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}
/* ------------------------------------------------------------------------ */
/* Génération du texte */
/* ------------------------------------------------------------------------ */
@@ -210,12 +198,25 @@ char **decouper_lignes(const char *texte, int *nb_lignes)
void normaliser_ligne(char *ligne)
{
for (int i = 0; ligne[i] != '\0'; i++) {
if (est_lettre(ligne[i]))
ligne[i] = en_minuscule(ligne[i]);
else
ligne[i] = ' ';
static char conversion[256];
static int initialisee = 0;
if (!initialisee) {
for (int c = 0; c < 256; c++) {
if (c >= 'A' && c <= 'Z')
conversion[c] = (char)(c - 'A' + 'a');
else if (c >= 'a' && c <= 'z')
conversion[c] = (char)c;
else
conversion[c] = ' ';
}
conversion[0] = '\0';
initialisee = 1;
}
/* L'indice non signé couvre les 256 valeurs possibles d'un octet. */
for (int i = 0; ligne[i] != '\0'; i++)
ligne[i] = conversion[(unsigned char)ligne[i]];
}
/* ------------------------------------------------------------------------ */