Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct buffer
- {
- int begin, end, size;
- char *buf;
- };
- typedef struct buffer buffer;
- buffer* create_buffer(int size)
- {
- buffer *b = (buffer *)calloc(1, sizeof(*b));
- b->begin = b->end = 0;
- b->size = size;
- b->buf = (char *)calloc(size, sizeof(b->buf[0]));
- return b;
- }
- void write_buffer(buffer *b, void *data, int size)
- {
- char *d = (char *)data;
- for (int i = 0; i < size && b->begin != (b->end + 1) % b->size; ++i)
- {
- b->buf[b->end] = d[i];
- b->end = (b->end + 1) % b->size;
- }
- }
- void read_buffer(buffer *b, void *data, int size)
- {
- char *d = (char *)data;
- for (int i = 0; i < size && b->begin != b->end; ++i)
- {
- d[i] = b->buf[b->begin];
- b->begin = (b->begin + 1) % b->size;
- }
- }
- int main(void)
- {
- buffer* b = create_buffer(10);
- char s[] = "asdasd";
- char s2[] = "qweqwerty";
- write_buffer(b, s, sizeof(s));
- write_buffer(b, s2, sizeof(s2));
- char s3[100];
- read_buffer(b, s3, sizeof(s3));
- for (int i = 0; i < 10; ++i)
- printf("%c", s3[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement