AprenderC
← Todas las lecciones

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;
}

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