Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.27 KB | None | 0 0
  1. #include <stdio.h>
  2. 2  
  3. 3   char *substr(const char *str, size_t n){
  4. 4       char *subcadena = malloc(sizeof(char) * (n + 1));
  5. 5       if(!subcadena) return NULL;
  6. 6       subcadena[0] = '\0';
  7. 7       size_t longitud = strlen(str);
  8. 8       if (n > longitud){
  9. 9           strncpy(subcadena, str, n);
  10. 10          return subcadena;
  11. 11         
  12. 12      }
  13. 13      strncat(subcadena, str, n);
  14. 14      return subcadena;
  15. 15  }
  16. 16 
  17. 17  char **split(const char *str, char sep){
  18. 18      if(!str) return NULL;
  19. 19      size_t contador = 1;
  20. 20      char* sub;
  21. 21      for (int i = 0; i < strlen(str); i++){
  22. 22          if(str[i] == sep) contador += 1;
  23. 23      }
  24. 24      char **arreglo = malloc((contador + 1) * sizeof(char*));
  25. 25      if(!arreglo) return NULL;
  26. 26      size_t cont_arreglo = 0;
  27. 27      size_t cont_subcadena = 0;
  28. 28      size_t posicion = 0;
  29. 29      for(int j = 0; j <= strlen(str); j++){
  30. 30          if(str[j] != sep && str[j] != '\0'){
  31. 31              cont_subcadena += 1;
  32. 32          }else{
  33. 33              if (cont_arreglo == 0){
  34. 34                  sub = substr(str, cont_subcadena);
  35. 35                  arreglo[cont_arreglo] = sub;
  36. 36                  cont_arreglo += 1;
  37. 37                  posicion = cont_subcadena + 1;
  38. 38                  cont_subcadena = 0;
  39. 39              }else{
  40. 40                  sub = substr(str + posicion, cont_subcadena);
  41. 41                  arreglo[cont_arreglo] = sub;
  42. 42                  cont_arreglo += 1;
  43. 43                  posicion += cont_subcadena + 1;
  44. 44                  cont_subcadena = 0;
  45. 45              }
  46. 46          }
  47. 47      }
  48. 48      arreglo[cont_arreglo] = NULL;
  49. 49      return arreglo;
  50. 50  }
  51. 51 
  52. 52  void procesar_linea(char* linea){
  53. 53      size_t capacidad = 0;
  54. 54      size_t i = 0;
  55. 55      size_t j = 0;
  56. 56      //size_t cont_operandos = 0;
  57. 57      //size_t cont_operadores = 0;
  58. 58      char sep = ' ';
  59. 59      char** operandos_operadores;
  60. 60      operandos_operadores = split(linea, sep);
  61. 61      while(operandos_operadores[i] != NULL){
  62. 62              while(operandos_operadores[i][j] != '\0'){
  63. 63                  printf("%s\n", &operandos_operadores[i][j]);
  64. 64                  j++;
  65. 65              }
  66. 66              j = 0;
  67. 67              i++;
  68. 68          }
  69. 69  }
  70. 70 
  71. 71  int main() {
  72. 72    char* linea = "2 5 +";
  73. 73    procesar_linea(linea);
  74. 74    return 0;
  75. 75  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement