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

    if(total < strlen(cadena))
    {
        char chr = cadena[total];
        char space = '\n';

        if(total == strlen(cadena)-1)
            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";
    int n = strlen(cadena);

    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
    puts(resultado);

    free(resultado);

    return 0;
}