Advertisement
KaeruCT

str.h

Jan 26th, 2012
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.42 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <assert.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5.  
  6. char my_charat(char *str, size_t i)
  7. {
  8.     return str[i];
  9. }
  10.  
  11. char* my_strchr(char *str, int chr)
  12. {
  13.     char *curchr = str;
  14.     int i;
  15.     size_t len = strlen(str);
  16.  
  17.     for(i = 0; i < len; i++)
  18.     {
  19.         if(chr == my_charat(curchr, i)){
  20.             return (char *)(curchr+i);
  21.         }
  22.     }
  23.    
  24.     return NULL;
  25. }
  26.  
  27. char* my_strstr(char *haystack, char *needle)
  28. {
  29.     int i;
  30.     size_t needle_len = strlen(needle);
  31.     int matches = 0;
  32.     char *begin = my_strchr(haystack, *needle);
  33.    
  34.     while(!matches && begin != NULL)
  35.     {
  36.         matches = 1;
  37.         for(i = 1; i < needle_len && matches; i++)
  38.         {
  39.             if(my_charat(begin, i) != my_charat(needle, i))
  40.             {
  41.                 matches = 0;
  42.                 begin = my_strchr(begin+1, my_charat(needle, 0));
  43.             }
  44.         }
  45.     }
  46.    
  47.     return begin;
  48. }
  49.  
  50. char* my_substr(const char *str, size_t begin, size_t n)
  51. {
  52.     char *result;
  53.     size_t len = strlen(str+begin);
  54.  
  55.     if (n < len) len = n;
  56.  
  57.     result = (char *) malloc(len + 1);
  58.     assert(result != NULL);
  59.  
  60.     *(result+len) = '\0';
  61.     return (char *) memcpy(result, str+begin, len);
  62. }
  63.  
  64.  
  65. int my_strsplit(char *str, char delimiter, size_t max_len, char *arr[])
  66. {
  67.     char *p = str;
  68.     int start = 0;
  69.     int n = 0;
  70.    
  71.     while(*p != '\0' && n < max_len)
  72.     {
  73.         if(*p == delimiter)
  74.         {
  75.             arr[n++] = my_substr(str, start, p-str-start);
  76.             p++;
  77.             start = p-str;
  78.         }
  79.         p++;
  80.     }
  81.  
  82.     arr[n++] = my_substr(str, start, p-str);
  83.    
  84.     return n;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement