¿Cómo generar una cadena de recuadro que sea más pequeña que el tamaño del signo de recuadro?

Entonces, mi código toma una cadena de letras, luego genera esa cadena de una forma de marquesina con el tamaño del signo de 5. Entonces, por ejemplo, si quiero mostrar "¡Hola Mundo!", La salida es:

[Hello]
[ello ]
[llo W]
[lo Wo]
[o Wor]
[ Worl]
[World]
[orld!]
[rld! ]
[ld! H]
[d! He]
[! Hel]
[ Hell]

Pero el problema es que si hay una cadena de letras que tiene una longitud de 8 y el tamaño del signo de marquesina es 10, entonces solo quiero mostrar la cadena una vez dentro del signo de marquesina. Entonces, si una cadena tiene un tamaño que es más pequeño que el signo de marquesina indicado, solo muestre la cadena una vez. Por ejemplo:

Input: 
Activist (the string that I want to output in a sign)
10 (the length of the sign)
Output:
[Activist  ]

Observe cómo todavía hay 10 espacios en el signo de marquesina y todo lo que hace es simplemente generar la cadena por sí sola una vez.

Aquí está mi código. He hecho que se ejecute más de una vez si está indicado:

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

void ignoreRestOfLine(FILE *fp) {
    int c;
    while ((c = fgetc(fp)) != EOF && c != '\n');
}

int main(void) {
    int num_times, count = 0;
    int marq_length, sign = 0;
    scanf("%d ", &num_times);
    char s[100];
    for (count = 0; count < num_times; count++) {
        if (fgets(s, sizeof(s), stdin) == NULL) {
            // Deal with error.
        }    
        if (scanf("%d", &marq_length) != 1) {
           // Deal with error.
        }

        ignoreRestOfLine(stdin);

        size_t n = strlen(s) - 1;
        int i, j;

        if (s[strlen(s) - 1] == '\n')
            s[strlen(s) - 1] = '\0';

        printf("Sign #%d:\n", ++sign);

        for (i = 0; i < n + 1; i++) {
            putchar('[');
            for (j = 0; j < marq_length; j++) {
                char c = s[(i + j) % (n + 1)];
                if (!c)
                    c = ' ';
                putchar(c);
            }
            printf( "]\n" );
        }
    }
}

La entrada y salida para esto es la siguiente:

Input:
3
Hello World!
5
Sign #1: (This is the output)
[Hello]
[ello ]
[llo W]
[lo Wo]
[o Wor]
[ Worl]
[World]
[orld!]
[rld! ]
[ld! H]
[d! He]
[! Hel]
[ Hell]
Activist
10
Sign #2: (This is the output)
[Activist A]
[ctivist Ac]
[tivist Act]
[ivist Acti]
[vist Activ]
[ist Activi]
[st Activis]
[t Activist]
[ Activist ]
LOL
2
Sign #3: (This is the output)
[LO]
[OL]
[L ]
[ L]

Todo está bien, excepto la señal # 2. ¿Cómo imprimo solo la cadena una vez en el signo de marquesina si la longitud de la cadena es menor que el tamaño del signo de marquesina?

Respuestas a la pregunta(1)

Su respuesta a la pregunta