fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. struct buffer
  7. {
  8. int begin, end, size;
  9. char *buf;
  10. };
  11. typedef struct buffer buffer;
  12. buffer* create_buffer(int size)
  13. {
  14. buffer *b = calloc(1, sizeof(*b));
  15. b->begin = b->end = 0;
  16. b->size = size;
  17. b->buf = calloc(size, sizeof(b->buf[0]));
  18. return b;
  19. }
  20. int write_buffer(buffer *b, void *data, int size)
  21. {
  22. char *d = (char *)data;
  23. int i;
  24. for (i = 0; i < size && b->begin != (b->end + 1) % b->size; ++i)
  25. {
  26. b->buf[b->end] = d[i];
  27. b->end = (b->end + 1) % b->size;
  28. }
  29. return i;
  30. }
  31. int read_buffer(buffer *b, void *data, int size)
  32. {
  33. char *d = (char *)data;
  34. int i;
  35. for (i = 0; i < size && b->begin != b->end; ++i)
  36. {
  37. d[i] = b->buf[b->begin];
  38. b->begin = (b->begin + 1) % b->size;
  39. }
  40. return i;
  41. }
  42. int main(void)
  43. {
  44. buffer* b = create_buffer(100);
  45. for (int i = 0; i < 10; ++i)
  46. write_buffer(b, &i, sizeof(i));
  47. long long p;
  48. while (read_buffer(b, &p, sizeof(p)) == sizeof(p))
  49. {
  50. printf("%d ", (int)p);
  51. }
  52. return 0;
  53. }
Compilation error #stdin compilation error #stdout 0s 15232KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘buffer* create_buffer(int)’:
prog.cpp:14:23: error: invalid conversion from ‘void*’ to ‘buffer*’ [-fpermissive]
     buffer *b = calloc(1, sizeof(*b));
                 ~~~~~~^~~~~~~~~~~~~~~
prog.cpp:17:20: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
     b->buf = calloc(size, sizeof(b->buf[0]));
              ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
stdout
Standard output is empty