Tu propio strlen
A una función no le llega la palabra: le llega dónde empieza.
1Por qué
Ya contaste las letras de una palabra en la lección 8. Ahora hazlo dentro de una función, y ahí aparece algo que no es obvio.
Cuando le pasas una palabra a una función, C no copia las letras. Copiar una palabra de mil letras cada vez que se pasa saldría carísimo, así que C pasa lo único que hace falta: la dirección de la primera letra. Por eso el parámetro se declara char *s — es un puntero, igual que los de la lección anterior.
Dentro, s[0] es la primera letra y s[1] la segunda. Los corchetes funcionan igual que en un arreglo aunque s sea un puntero, y en la próxima lección vas a ver por qué son la misma cosa.
Lo que vas a escribir es strlen, una de las funciones más usadas de C. Escribirla tú es la mejor forma de entender por qué las palabras terminan en cero: sin esa marca, la función no tendría ninguna forma de saber dónde parar.
2Míralo andar
Este programa funciona. Léelo, y después ejecútalo sin cambiar nada.
#include <stdio.h>char primera(char *s){return s[0];}int main(void){printf("%c\n", primera("hola"));return 0;}
- línea 3
char *srecibe la dirección de la primera letra, no una copia de la palabra. - línea 5
s[0]entra a la primera letra. Los corchetes funcionan igual que en un arreglo. - línea 10
%cescribe una sola letra.%sescribiría la palabra entera.
3Ahora tú
Completa largo para que cuente las letras de la palabra
#include <stdio.h>int largo(char *s){int n = 0;/* Escribe tu orden aquí */return n;}int main(void){printf("%d\n", largo("puntero"));return 0;}
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
Memoria
↖︎ Ejecuta el programa para ver qué pasa por dentro