Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

ANY OF U REDDY 2 CHALLENGE ME YET?

Name: L. A. Calculus !!wKyoNUUHDOmjW7I 2013-06-20 0:33

CARN

Name: L. A. Calculus !!wKyoNUUHDOmjW7I 2013-06-20 23:11

>>45
I GOTTA SAY, DAT'S PRETTY IMPRESSIVE, THOUGH I THOUGHT IT WAS SUPPOSED TO WORK WITH INPUT OF ANY SIZE. OH WELL. IT'S STILL PRETTY INTERESTING -- I'LL REED INTO IT A BIT MORE.

HERE'S MINE:

TIMESTAMP: http://ideone.com/SnV26P

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

enum {
    SIZE = 8192
};

size_t count(const char *s, int c)
{
    size_t r;

    for (r = 0; *s; r += *s++ == (char) c)
        ;
    return r;
}

size_t max_strcspn(const char *s, int c)
{
    size_t max, tmp;

    for (max = tmp = 0; *s; s++) {
        if (*s != (char) c) {
            tmp++;
            continue;
        }
        if (tmp > max)
            max = tmp;
        tmp = 0;
    }
    return max;
}

char *fill(char *to, size_t longest, size_t lines, const char *from)
{
    char *save = to;
    size_t n;

    for (n = longest; lines; from++)
        if (*from == '\n') {
            memset(to, ' ', n);
            to += n;
            n = longest;
            lines--;
        } else {
            *to++ = *from;
            n--;
        }
    return save;
}

char *readall(FILE *iop)
{
    char buf[SIZE];
    size_t a = 0, n;
    char *r, *tmp;

    for (r = 0; (n = fread(buf, 1, SIZE, iop)) == SIZE; r = tmp) {
        if (!(tmp = realloc(r, a + SIZE))) {
            free(r);
            return 0;
        }
        memcpy(tmp + SIZE, buf, SIZE);
        a += SIZE;
    }
    if (!(tmp = realloc(r, a + n + 1))) {
        free(r);
        return 0;
    }
    memcpy(tmp + a, buf, n);
    tmp[a + n] = '\0';
    return tmp;
}

int main(void)
{
    size_t lines, longest;
    char *ptr, *s;

    if (!(s = readall(stdin))
     || !(ptr = malloc((lines = count(s, '\n')) *
               (longest = max_strcspn(s, '\n'))))) {
        free(s);
        return EXIT_FAILURE;
    }
    fill(ptr, longest, lines, s);
    for (size_t i = 0; i < longest; i++) {
        for (size_t n = 0; n < lines; n++)
            putchar(ptr[longest * n + i]);
        puts("");
    }
    free(s);
    free(ptr);
}


>>46,58
I AINT EVEN GONNA REED DIS SHIT UNTIL YOU POINT OUT WHERE I USE malloc IN MY PROGRAM. QUIT TRYING TO MISREPRESENT MY PROGRAM YA FUCKING COWARD.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List