Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Filtrer les caractères d'une chaîne en c
- * Antonio Villanueva
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- //Filtrer ou supprimer un caractère c de str, de taille size
- void filterChar(char *str,size_t size,char c) {
- //allouer de la mémoire pour une chaîne tmp équivalente à la chaîne d'origine
- char *tmp= malloc ( size*(sizeof (char))+1 );
- //memset(tmp, 0, size+1); // Establecemos los primeros 10 bytes a 0
- char *ptr=tmp;//Référence au début du pointeur tmp
- char *ptr2=str;//Référence au début du string str
- if (tmp == NULL) {
- printf("Erreur: Malloc.\n");
- exit(1);
- }
- //S'il s'agit d'une chaîne de type char*, elle ne se termine pas par zéro !
- while ( size >0){//jusqu'à ce qu'il atteigne la fin de la chaîne de texte
- if (*str != c){//Si ce n'est pas le caractère à supprimer copier
- *tmp=*str;//Copy
- ++tmp;
- }
- ++str;
- size--;
- }
- memcpy (ptr2,ptr,size);//Copie le résultat tmp dans la chaîne source str
- free (ptr); //Il s'agit de tmp en première position tmp [0] ...
- }
- int main(){
- //char *chaine="aabcdefghijklmaaaaanofdsqfdss";//ne finit pas par zéro
- char chaine[]="aabcdefghijklmaaaaanofdsqfdss"; //finit par zéro
- filterChar (chaine,strlen(chaine),'a');//Filtre p.e la lettre a
- printf ("%s \n",chaine);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement