All pastes #336674 Raw Edit

Mine

public text v1 · immutable
·published 2007-02-02 05:23 UTC
rendered paste body
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


/* we implement a stream (file) like data type using pointers */

typedef struct stream {
  char *data;  /* the begginning of the data */
  char *ptr;   /* the current position */

  int len;     /* length of data */
} stream_t;



/* initialize a stream */
stream_t s_fill(char *data, int len)
{
  stream_t result;
  
  result.len = len;
  result.data = malloc(len);
  if(!result.data) {
    fprintf(stderr, "no memory\n");
    exit(1);
  }

  /* copy data in */
  memcpy(result.data, data, len);
  result.ptr = data;
  
  return result;
}

/* read from a stream */
char *s_read(stream_t *stream, int len)
{
  stream->ptr += len;
  return stream->ptr - len;
}



int main()
{
  char data[] = "Hello foo bar baz bomb World";
  stream_t stream = s_fill(data, strlen(data));
 
  printf("%c\n", *s_read(&stream, 1));
  s_read(&stream, 3);  /* skip 3 chars */
  printf("%c\n", *s_read(&stream, 1));
  s_read(&stream, 5);
  printf("%c\n", *s_read(&stream, 1));

  return 0;
}