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;
}