str.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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) + 1));
  21. memset(res, 0, strlen(str) + 1);
  22. strcpy(res, str);
  23. return res;
  24. }
  25. //Sinon creation nouvelle chaine
  26. res = malloc(sizeof(char) * (strlen(str) - cmpt + 1));
  27. memset(res, 0, strlen(str) - cmpt + 1);
  28. for(int i = 0, j = cmpt; j < (strlen(str)); i++, j++){
  29. res[i] = str[j];
  30. }
  31. //Retour nouvelle chaine
  32. return res;
  33. }
  34. char* rtrim(char* str, char mask){
  35. //Variable
  36. int cmpt = strlen(str) - 1;
  37. char* res;
  38. //Compte le nombre d'espace
  39. while(str[cmpt] == mask){
  40. cmpt--;
  41. }
  42. //Si aucun espace au debut
  43. if(cmpt == strlen(str) - 1){
  44. res = malloc(sizeof(char) * (strlen(str) + 1));
  45. memset(res, 0, strlen(str) + 1);
  46. strcpy(res, str);
  47. return res;
  48. }
  49. cmpt++;
  50. //Sinon creation nouvelle chaine
  51. res = malloc(sizeof(char) * (cmpt + 2));
  52. memset(res, 0, cmpt + 2);
  53. for(int i = 0; i < cmpt; i++){
  54. res[i] = str[i];
  55. }
  56. //Retour nouvelle chaine
  57. return res;
  58. }