Contar las letras
El texto también es una fila de cajitas: una letra en cada una.
1Por qué
En C el texto no es una cosa aparte. Una palabra es un arreglo de letras: una letra por cajita, igual que los números de la lección anterior.
Eso deja una pregunta incómoda. Un arreglo de números tiene el tamaño que le diste al crearlo, pero ¿dónde termina una palabra? Si llega de fuera, puede tener cualquier largo.
C lo resuelve con un truco que vas a ver en todos los talleres del semestre: al final de cada palabra guarda una cajita más, con el valor cero. Se escribe '\0', no se ve al imprimir, y significa «aquí se acabó».
Por eso contar las letras no es mirar un número guardado en alguna parte: es avanzar cajita por cajita hasta topar con ese cero. Y por eso, si esa marca falta, el programa sigue leyendo más allá de la palabra y saca lo que hubiera ahí — que es uno de los fallos que este taller te va a saber explicar cuando ocurra.
2Míralo andar
Este programa funciona. Léelo, y después ejecútalo sin cambiar nada.
#include <stdio.h>int main(void){char palabra[4] = "sol";int largo = 0;while (palabra[largo] != 0){largo = largo + 1;}printf("sol tiene %d letras\n", largo);return 0;}
- línea 5
Cuatro cajitas para tres letras: la cuarta es la marca de fin. Sin ese sitio de más no cabría. - línea 8
La pregunta es «¿la letra númerolargotodavía no es el cero del final?». - línea 10
Avanza una cajita. Si esta línea faltara, la pregunta miraría siempre la misma letra y el ciclo no terminaría nunca.
3Ahora tú
Haz que el programa escriba: hola tiene 4 letras
#include <stdio.h>int main(void){char palabra[5] = "hola";int largo = 0;while (palabra[largo] != 0){}printf("hola tiene %d letras\n", largo);return 0;}
↖︎ Tu línea va aquí. Sin ella el ciclo no avanza y no termina nunca.
Ejecutar
Lo que dice tu programa
↖︎ Escribe tu parte y dale a Ejecutar
Qué pasó
Aquí te aviso si tu programa hace algo raro.
4Qué guarda tu programa
La pila
↖︎ Ejecuta el programa para ver qué pasa por dentro