Para lo de la violacion de segmento: estas trabajando con caracteres, para la asignacion puedes usar las comillas simples que denotan caracter (en tu caso usas comillas dobles que denotan cadena de texto, pero solo se asigna el primer caracter), luego junto con eso para imprimir con formato es %c para los caracteres (%s para las cadenas):
Código C:
Ver originalchar caracter = 'a';
printf("%s", caracter
);//violacion de segmento printf("%c", caracter
);//muestra el caracter
Luego está la parte de si funciona tal como esperas: en ambos prints envias un espacio seguido del caracter 'es':
No creo que sea esto lo que buscas. Ademas estas haciendo un ciclo dentro de otro, es decir que para cada 'esp' muestras un espacio mas el caracter 'es' seguido de lo que resulta del bucle de los 'sign'. Tal como dices quieres mostrar ---###, tienes que hacer primero el ciclo para mostrar los espacios y luego (fuera de ese ciclo) poner el ciclo para mostrar los signos.
Espero que te sea de ayuda
Saludos
vosk