Insertion de caractères en C
mijad
Messages postés
118
Date d'inscription
Statut
Membre
Dernière intervention
-
zebiloute Messages postés 105 Date d'inscription Statut Membre Dernière intervention -
zebiloute Messages postés 105 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaye de résoudre un truc en C. Voilà, j'aimerais ajouter une suite de caractères dans une chaine en fonction du nombre de ce caractère trouvé dans la chaine.
Exemple : Dans la chaine "je vais à la plage", il y a quatre espaces. J'aimerais donc ajouter 4 espaces à la suite des espaces existants.
D'avance, merci et
@+
Michel
J'essaye de résoudre un truc en C. Voilà, j'aimerais ajouter une suite de caractères dans une chaine en fonction du nombre de ce caractère trouvé dans la chaine.
Exemple : Dans la chaine "je vais à la plage", il y a quatre espaces. J'aimerais donc ajouter 4 espaces à la suite des espaces existants.
D'avance, merci et
@+
Michel
A voir également:
- Insertion de caractères en C
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Touche insertion clavier - Guide
- Insertion sommaire word - Guide
- Insertion filigrane word - Guide
1 réponse
Ben
Tu fais une copie de la chaine ! (C2)
Tu scanes la chaîne de manière a trouver tes espaces
Une fois l'espace trouver, tu ajoutes quatre espace (caractère 32) à l'emplacement+1.
Tu recopies le contenue de la chaîne C2, à l'emplcement +1 dans la chaîne C1, à l'emplacement + 5.
char *C1, C2, tmpC;
memcpy(C2, C1);
tmpC = C1;
while(tmpC)
{
if(tmpC == 32) // un espace
{
tmpC++; // Passer au caractère suivant
C2++;
if(!tmpC) // Si fin de chaine
break;
memset(tmpC, 32, 4); // Attention y a pas de control de débordement ici
tmpc +=4;
memset(tmpC, 1, 0); // terminer la chaîne
strcat(tmpC, C2); // Completer avec le reste de la phrase.
}
else // Po sûr pour le else là
{
tmpC++; // On passe au caractère suivant.
C2++; // On passe au caractère suivant.
}
}
Je suis pas sûr que ça marche (po tester). Mais bon cela peut peu ête te donner une idée de la chose. Honnêtement c'est pas l'algo le plus pértinent mais il est bien détailé, sauf que l'on contrôl pas les débordement..
Tiens ça peut devenir un jeu sympa : TROUVER le code le plus court pour faire ce qui est demandé !!!!
Tu fais une copie de la chaine ! (C2)
Tu scanes la chaîne de manière a trouver tes espaces
Une fois l'espace trouver, tu ajoutes quatre espace (caractère 32) à l'emplacement+1.
Tu recopies le contenue de la chaîne C2, à l'emplcement +1 dans la chaîne C1, à l'emplacement + 5.
char *C1, C2, tmpC;
memcpy(C2, C1);
tmpC = C1;
while(tmpC)
{
if(tmpC == 32) // un espace
{
tmpC++; // Passer au caractère suivant
C2++;
if(!tmpC) // Si fin de chaine
break;
memset(tmpC, 32, 4); // Attention y a pas de control de débordement ici
tmpc +=4;
memset(tmpC, 1, 0); // terminer la chaîne
strcat(tmpC, C2); // Completer avec le reste de la phrase.
}
else // Po sûr pour le else là
{
tmpC++; // On passe au caractère suivant.
C2++; // On passe au caractère suivant.
}
}
Je suis pas sûr que ça marche (po tester). Mais bon cela peut peu ête te donner une idée de la chose. Honnêtement c'est pas l'algo le plus pértinent mais il est bien détailé, sauf que l'on contrôl pas les débordement..
Tiens ça peut devenir un jeu sympa : TROUVER le code le plus court pour faire ce qui est demandé !!!!