Insertion de caractères en C

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

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. 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é !!!!