Advertisement
Guest User

Untitled

a guest
May 19th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement