Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Napisati na programskom jeziku C funkciju
- char** str_split(char* s, char sep); koja deli
- zadati string s na fragmente. Prvi argument
- funkcije je string s, koji treba podeliti, a drugi je
- znak sep, koji predstavlja separator fragmenata.
- Fragmenti mogu biti prazni u slučaju kada string s
- počinje ili se završava separatorom ili ako su dva
- separatora jedan do drugog. Funkcija treba da
- vrati pokazivač na dinamički niz pokazivača na
- fragmente koji se formira u funkciji. Ako je ulazni
- string prazan, funkcija vraća NULL, a ako ne
- sadrži separator onda string s predstavlja jedini
- fragment.*/
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- char** str_split(char* s, char sep) {
- if(!s || strlen(s) == 0) return NULL;
- char **str = NULL;
- int size = 0;
- while(1) {
- char *p = s;
- while(*p && *p != sep) p++;
- str = realloc(str,
- sizeof(*str) * (++size + 1));
- if(!str) {
- perror("Error"); exit(1);
- }
- str[size - 1] = calloc(sizeof(**str),
- (p - s + 1));
- if(!str[size - 1]) {
- perror("Error"); exit(1);
- }
- strncpy(str[size - 1], s, p - s);
- str[size] = NULL;
- if(!*p) break;
- s = p+1;
- }
- return str;
- }
- int main(void) {
- char *s = "Split this string";
- char **str = str_split(s, ' '), **t = str;
- while(t && *t) {
- puts(*t);
- free(*t);
- t++;
- }
- free(str);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement