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
   | #include <stdio.h>
#include <stdlib.h>
 
int LongueurChaine( char *Chaine );
void SupprimerOccurenceDansChaine( char *Chaine, int LongueurChaine, char **NouvelleChaine, int **LongueurNouvelleChaine, char Occurrence );
 
int main()
{
    char *Chaine="bonjour";
    printf("\n\n Longueur de \"%s\" = %d", Chaine, LongueurChaine( Chaine ) );
 
    int  *NouvelleLongueur;
    char *NouvelleChaine  ;
 
    SupprimerOccurenceDansChaine( Chaine, LongueurChaine( Chaine ), &NouvelleChaine, &NouvelleLongueur, 'b' );
 
    int i;
    for ( i=0 ; i<*NouvelleLongueur ; i++ )
        {
            printf("%c", NouvelleChaine[i]);
        }
 
    free(Chaine);
    free(NouvelleLongueur);
    free(NouvelleChaine);
    return 0;
}
 
int LongueurChaine( char *Chaine )
{
    int Longueur = 0;
 
    while ( *Chaine != '\0' )
          {
              Longueur++;
              Chaine++;
          }
 
    return Longueur;
}
 
void SupprimerOccurenceDansChaine( char *Chaine, int LongueurChaine, char **NouvelleChaine, int **LongueurNouvelleChaine, char Occurrence )
{
    *NouvelleChaine         = NULL;
    *LongueurNouvelleChaine = NULL;
 
    *LongueurNouvelleChaine = (int *)malloc( sizeof( int ) );
    *LongueurNouvelleChaine = 0;
 
    char *TestRealloc = NULL;
    printf("\n 1");
    if ( Chaine != NULL && NouvelleChaine != NULL && LongueurNouvelleChaine != NULL )
       {
           printf("2");
           int i;
           for ( i=0 ; i<LongueurChaine ; i++ )
               {
                   if ( Chaine[i] != Occurrence )
                      {
                          printf("3");
                          TestRealloc = (char *)realloc( TestRealloc, (**LongueurNouvelleChaine+1)*sizeof(char) );
                          printf("3 bis");
                          if ( TestRealloc != NULL )
                             {
                                 printf("4");
                                  *NouvelleChaine                           = TestRealloc;
                                 (*NouvelleChaine)[**LongueurNouvelleChaine] = Chaine[i];
                                  **LongueurNouvelleChaine                   = **LongueurNouvelleChaine + 1;
                             }
 
                        else {
                                printf("5");
                                 *NouvelleChaine         = NULL;
                                 *LongueurNouvelleChaine = 0;
                             }
                      }
               }
       }
 
    else printf("ERREUR");
 
    free(TestRealloc);
} | 
Partager