str.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "str.h"
  4. char* trim(char* str){
  5. return ltrim(rtrim(str, ' '), ' ');
  6. }
  7. char* mtrim(char* str, char mask){
  8. return ltrim(rtrim(str, mask), mask);
  9. }
  10. char* ltrim(char* str, char mask){
  11. //Variable
  12. int cmpt = 0;
  13. char* res;
  14. //Compte le nombre d'espace
  15. while(str[cmpt] == mask){
  16. cmpt++;
  17. }
  18. //Si aucun espace au debut
  19. if(cmpt == 0){
  20. res = malloc(sizeof(char) * strlen(str));
  21. strcpy(res, str);
  22. return res;
  23. }
  24. //Sinon creation nouvelle chaine
  25. res = malloc(sizeof(char) * (strlen(str) - cmpt + 1));
  26. for(int i = 0, j = cmpt; i < (strlen(str) - cmpt); i++, j++){
  27. res[i] = str[j];
  28. }
  29. //Retour nouvelle chaine
  30. return res;
  31. }
  32. char* rtrim(char* str, char mask){
  33. //Variable
  34. int cmpt = strlen(str) - 1;
  35. char* res;
  36. //Compte le nombre d'espace
  37. while(str[cmpt] == mask){
  38. cmpt--;
  39. }
  40. //Si aucun espace au debut
  41. if(cmpt == strlen(str) - 1){
  42. res = malloc(sizeof(char) * strlen(str));
  43. strcpy(res, str);
  44. return res;
  45. }
  46. cmpt++;
  47. //Sinon creation nouvelle chaine
  48. res = malloc(sizeof(char) * (cmpt + 2));
  49. for(int i = 0; i < cmpt; i++){
  50. res[i] = str[i];
  51. }
  52. //Retour nouvelle chaine
  53. return res;
  54. }