Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <assert.h>
- #include <string.h>
- #include <stdio.h>
- char my_charat(char *str, size_t i)
- {
- return str[i];
- }
- char* my_strchr(char *str, int chr)
- {
- char *curchr = str;
- int i;
- size_t len = strlen(str);
- for(i = 0; i < len; i++)
- {
- if(chr == my_charat(curchr, i)){
- return (char *)(curchr+i);
- }
- }
- return NULL;
- }
- char* my_strstr(char *haystack, char *needle)
- {
- int i;
- size_t needle_len = strlen(needle);
- int matches = 0;
- char *begin = my_strchr(haystack, *needle);
- while(!matches && begin != NULL)
- {
- matches = 1;
- for(i = 1; i < needle_len && matches; i++)
- {
- if(my_charat(begin, i) != my_charat(needle, i))
- {
- matches = 0;
- begin = my_strchr(begin+1, my_charat(needle, 0));
- }
- }
- }
- return begin;
- }
- char* my_substr(const char *str, size_t begin, size_t n)
- {
- char *result;
- size_t len = strlen(str+begin);
- if (n < len) len = n;
- result = (char *) malloc(len + 1);
- assert(result != NULL);
- *(result+len) = '\0';
- return (char *) memcpy(result, str+begin, len);
- }
- int my_strsplit(char *str, char delimiter, size_t max_len, char *arr[])
- {
- char *p = str;
- int start = 0;
- int n = 0;
- while(*p != '\0' && n < max_len)
- {
- if(*p == delimiter)
- {
- arr[n++] = my_substr(str, start, p-str-start);
- p++;
- start = p-str;
- }
- p++;
- }
- arr[n++] = my_substr(str, start, p-str);
- return n;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement