SHARE
TWEET

Untitled

a guest May 19th, 2017 44 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "my_string.h"
  2.  
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6.  
  7. stream_t        init()
  8. {
  9.   stream_t      s;
  10.  
  11.   s.str = NULL;
  12.   s.size = 0;
  13.   s.limit = 0;
  14.  
  15.   return s;
  16. }
  17.  
  18. stream_t        create(char* str)
  19. {
  20.   stream_t      s;
  21.   int           size;
  22.   int           k;
  23.  
  24.   size = strlen(str);
  25.   k = size / BUF_SIZE + 1;
  26.  
  27.   s.str = (char*) malloc (k * BUF_SIZE * sizeof(char));
  28.   strcpy(s.str, str);
  29.   s.size = size;
  30.   s.limit = k * BUF_SIZE;
  31.  
  32.   return s;
  33. }
  34.  
  35. void            add(stream_t* ptr, char* str)
  36. {
  37.   int           size_str;
  38.  
  39.   size_str = strlen(str);
  40.  
  41.   for(int i = 0; i < size_str; i++)
  42.     ptr->str[ptr->size + i] = str[i];
  43.  
  44.   ptr->size += size_str;
  45. }
  46.  
  47. void        append(stream_t *ptr, char* str)
  48. {
  49.   int           size;
  50.  
  51.   if(ptr->str == NULL)
  52.     *ptr = create(str);
  53.   else
  54.   {
  55.     size = strlen(str);
  56.     if(ptr->size + size >= ptr->limit)
  57.     {
  58.       ptr->str = (char*) realloc (ptr->str, ptr->limit + 4*BUF_SIZE);
  59.       ptr->limit += 4*BUF_SIZE;
  60.     }
  61.     add(ptr, str);
  62.   }
  63. }
  64.  
  65. void            destroy(stream_t s)
  66. {
  67.   free(s.str);
  68. }
RAW Paste Data
Top