#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
/* más codigo si hace falta */
// nop :P
 
char* diag(char* cadena, char* resultado) {
    /* Escribir código */
 
    static int total;
 
    {
        char chr = cadena[total];
        char space = '\n';
 
            space = '\0';
 
        sprintf(resultado
, "%s%*c%c", resultado
, total
+1, chr
, space
);         total++;
 
        return diag(cadena, resultado);
    }
 
    total = 0;
 
    return resultado;
}
 
int main (void) {
    char cadena [] = "abcde";
 
    char* resultado 
= (char *)malloc(n 
* n 
+ 1); /* doy mas espacio del necesario */  
    // a partir de la cadena de caracteres retornar la nueva que tenga los caracteres en diagonal
    resultado = diag(cadena, resultado);
 
    //mostrar resultado
 
 
    return 0;
}
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKLyogbcOhcyBjb2RpZ28gc2kgaGFjZSBmYWx0YSAqLwovLyBub3AgOlAKCmNoYXIqIGRpYWcoY2hhciogY2FkZW5hLCBjaGFyKiByZXN1bHRhZG8pIHsKICAgIC8qIEVzY3JpYmlyIGPDs2RpZ28gKi8KCiAgICBzdGF0aWMgaW50IHRvdGFsOwoKICAgIGlmKHRvdGFsIDwgc3RybGVuKGNhZGVuYSkpCiAgICB7CiAgICAgICAgY2hhciBjaHIgPSBjYWRlbmFbdG90YWxdOwogICAgICAgIGNoYXIgc3BhY2UgPSAnXG4nOwoKICAgICAgICBpZih0b3RhbCA9PSBzdHJsZW4oY2FkZW5hKS0xKQogICAgICAgICAgICBzcGFjZSA9ICdcMCc7CgogICAgICAgIHNwcmludGYocmVzdWx0YWRvLCAiJXMlKmMlYyIsIHJlc3VsdGFkbywgdG90YWwrMSwgY2hyLCBzcGFjZSk7CiAgICAgICAgdG90YWwrKzsKCiAgICAgICAgcmV0dXJuIGRpYWcoY2FkZW5hLCByZXN1bHRhZG8pOwogICAgfQoKICAgIHRvdGFsID0gMDsKCiAgICByZXR1cm4gcmVzdWx0YWRvOwp9CgppbnQgbWFpbiAodm9pZCkgewogICAgY2hhciBjYWRlbmEgW10gPSAiYWJjZGUiOwogICAgaW50IG4gPSBzdHJsZW4oY2FkZW5hKTsKCiAgICBjaGFyKiByZXN1bHRhZG8gPSAoY2hhciAqKW1hbGxvYyhuICogbiArIDEpOyAvKiBkb3kgbWFzIGVzcGFjaW8gZGVsIG5lY2VzYXJpbyAqLwoKICAgIC8vIGEgcGFydGlyIGRlIGxhIGNhZGVuYSBkZSBjYXJhY3RlcmVzIHJldG9ybmFyIGxhIG51ZXZhIHF1ZSB0ZW5nYSBsb3MgY2FyYWN0ZXJlcyBlbiBkaWFnb25hbAogICAgcmVzdWx0YWRvID0gZGlhZyhjYWRlbmEsIHJlc3VsdGFkbyk7CgogICAgLy9tb3N0cmFyIHJlc3VsdGFkbwogICAgcHV0cyhyZXN1bHRhZG8pOwoKICAgIGZyZWUocmVzdWx0YWRvKTsKCiAgICByZXR1cm4gMDsKfQ==