Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <unistd.h>
- #include <stdio.h>
- #include <string.h>
- #define BUF_SIZE 1024*1024
- static char sumarize(char* pos, char l)
- {
- char sum, i;
- for (i = 0, sum = 0; i < l; i++) {
- sum += pos[i];
- }
- return sum;
- }
- static void dict(char* pos, char posl, char* dict, char dictl)
- {
- memset(dict, 0, dictl);
- char sum, i;
- for (i = 0, sum = 0; i < posl; i++) {
- sum += pos[i];
- dict[sum] = 1;
- }
- }
- static char _buf[BUF_SIZE];
- static int _buf_used = 0;
- static void bflush()
- {
- write(1, _buf, _buf_used);
- _buf_used = 0;
- }
- static void bwrite(char c)
- {
- _buf[_buf_used] = c;
- if(++_buf_used == BUF_SIZE)
- bflush();
- }
- int main(int argc, char *argv[])
- {
- char separator = ',';
- char sizes[] = {4,4,4,3,5,1,1,3,3,3,3,3,3,10,3,1,1,1,2,3,10};
- char sum = sumarize(sizes, (char)sizeof(sizes));
- char d[sum];
- dict(sizes, (char)sizeof(sizes) - 1, d, sum);
- char counter = 0;
- char c;
- char buf[BUF_SIZE];
- int readed, i;
- while ((readed = read(0, buf, BUF_SIZE)) > 0)
- {
- for(i=0; i < readed; i++)
- {
- c = buf[i];
- if(c == '\n')
- {
- counter = 0;
- bwrite(c);
- continue;
- }
- bwrite(c);
- if(d[++counter])
- {
- bwrite(separator);
- }
- }
- if(buf[readed - 1] == EOF)
- {
- break;
- }
- }
- bflush();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement