Básicamente, la cadena es una codificación de longitud de ejecución de la imagen: los caracteres alternos en la cadena dicen cuántas veces dibujar un espacio y cuántas veces dibujar un signo de exclamación consecutivamente. Aquí hay un análisis de los diferentes elementos de este programa:
La cadena codificada
Los primeros 31 caracteres de esta cadena se ignoran. El resto contiene instrucciones para dibujar la imagen. Los caracteres individuales determinan cuántos espacios o signos de exclamación dibujar de forma consecutiva.
Exterior para lazo
Este bucle pasa sobre los caracteres de la cadena. Cada iteración aumenta el valor de b
en uno y asigna el siguiente carácter de la cadena a a
.
Interior para bucle
Este bucle dibuja caracteres individuales y una nueva línea cada vez que llega al final de la línea. El número de caracteres dibujados es a - 64
. El valor de c
va de 10 a 90 y se restablece a 10 cuando se alcanza el final de la línea.
los putchar
Esto se puede reescribir como:
++c;
if (c==90) { //'Z' == 90
c = 10; //Note: 10 == '\n'
putchar('\n');
}
else {
if (b % 2 == 0)
putchar('!');
else
putchar(' ');
}
Dibuja el carácter apropiado, dependiendo de si b
es par o impar, o una nueva línea cuando sea necesario.