Advertisement
KvArt

Funkcija za podelu stringa

Jul 12th, 2022
698
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.27 KB | None | 0 0
  1. /*Napisati na programskom jeziku C funkciju
  2. char** str_split(char* s, char sep); koja deli
  3. zadati string s na fragmente. Prvi argument
  4. funkcije je string s, koji treba podeliti, a drugi je
  5. znak sep, koji predstavlja separator fragmenata.
  6. Fragmenti mogu biti prazni u slučaju kada string s
  7. počinje ili se završava separatorom ili ako su dva
  8. separatora jedan do drugog. Funkcija treba da
  9. vrati pokazivač na dinamički niz pokazivača na
  10. fragmente koji se formira u funkciji. Ako je ulazni
  11. string prazan, funkcija vraća NULL, a ako ne
  12. sadrži separator onda string s predstavlja jedini
  13. fragment.*/
  14.  
  15. #include <stdio.h>
  16. #include <stdlib.h>
  17. #include <string.h>
  18. char** str_split(char* s, char sep) {
  19. if(!s || strlen(s) == 0) return NULL;
  20. char **str = NULL;
  21. int size = 0;
  22. while(1) {
  23. char *p = s;
  24. while(*p && *p != sep) p++;
  25. str = realloc(str,
  26. sizeof(*str) * (++size + 1));
  27. if(!str) {
  28. perror("Error"); exit(1);
  29. }
  30. str[size - 1] = calloc(sizeof(**str),
  31. (p - s + 1));
  32. if(!str[size - 1]) {
  33. perror("Error"); exit(1);
  34. }
  35. strncpy(str[size - 1], s, p - s);
  36. str[size] = NULL;
  37. if(!*p) break;
  38. s = p+1;
  39. }
  40. return str;
  41. }
  42. int main(void) {
  43. char *s = "Split this string";
  44. char **str = str_split(s, ' '), **t = str;
  45. while(t && *t) {
  46. puts(*t);
  47. free(*t);
  48. t++;
  49. }
  50. free(str);
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement