Skip to content

strrchr

Marcos edited this page Oct 2, 2024 · 1 revision

La función ft_strrchr busca la última aparición del carácter c en la cadena s. Devuelve un puntero a la última aparición del carácter o NULL si no se encuentra.

Explicación del comando man

STRRCHR(3) (simplified)

NAME
    strrchr -- locate character in string
SYNOPSIS
    char *strrchr(const char *s, int c);
DESCRIPTION
    The strrchr() function is identical to strchr(), except it locates the last occurence of c.
RETURN VALUES
    The function strrchr() returns a pointer to the located character, or NULL if the character does not appear in the string.

Explicación con mis palabras

La función strrchr() busca en la cadena s el carácter c (pasado como entero pero convertido internamente a char). Devuelve un puntero a la última aparición de ese carácter en la cadena. Si c es el carácter nulo ('\0'), también se busca y devuelve un puntero a esa posición. Si el carácter no se encuentra, devuelve NULL.

Implementación en C

Aquí te muestro mi implementación de la función ft_strrchr en mi proyecto de Libft.

Código de ft_strrchr

#include "libft.h"

char	*ft_strrchr(const char *s, int c)
{
	int			i;
	const char	*result;

	// Inicializamos el puntero result a NULL
	i = 0;
	result = NULL;

	// Recorremos la cadena buscando la última aparición del carácter
	while (s[i])
	{
		if (s[i] == (char)c)
			result = &s[i]; // Guardamos la posición si encontramos el carácter
		i++;
	}

	// Si el carácter es '\0', retornamos puntero al final de la cadena
	if (s[i] == (char)c)
		return ((char *)&s[i]);
	else
		// Si encontramos el carácter antes, devolvemos la última aparición
		return ((char *)result);
}

Main para probar ft_strrchr

El siguiente código es un ejemplo de cómo puedes probar la función ft_strrchr():

#include <stdio.h>

char	*ft_strrchr(const char *s, int c);

int main(void)
{
	const char str[] = "Libft es genial!";
	char *result;

	result = ft_strrchr(str, 'e'); // Busca la última aparición de 'e'
	if (result)
		printf("Última aparición de 'e' en: %s\n", result);
	else
		printf("'e' no encontrado.\n");

	result = ft_strrchr(str, 'z'); // Busca un carácter que no existe
	if (result)
		printf("Última aparición de 'z' en: %s\n", result);
	else
		printf("'z' no encontrado.\n");

	return 0;
}

Recomendaciones o ejemplos de uso

  • ¿Por qué usar strrchr?
    strrchr es útil cuando necesitas encontrar la última aparición de un carácter en una cadena, lo que puede ser importante cuando trabajas con delimitadores o procesas cadenas de texto al revés.

  • ¿Cuándo usar strrchr?
    Usa strrchr cuando necesites buscar la última aparición de un carácter en una cadena larga, o cuando quieras obtener el último delimitador en una cadena (por ejemplo, el último punto en una dirección de archivo o URL).

Clone this wiki locally