Replica strcmp

di il
4 risposte

Replica strcmp

#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

/*char *ft_strncpy(char *dest, char *src); */

int		ft_strcmp(char *s1, char *s2);

int		main(void)
{
	char	*str1;
	char	*str2;

	str1 = "ada";
	str2 = "adgg";
	printf("%d\n", ft_strcmp(str1, str2));
	printf("%d\n", strcmp(str1, str2));
}


int		ft_strcmp(char *s1, char *s2)
{
	while (*s1 == *s2 && *s1)
	{
		s1++;
		s2++;
	}
	return (*s1 - *s2);
}
Sto cercando di replicare la funzione strcmp tuttavia come output mi restituisce un qualsiasi numero invece di 1 o -1, so che c'entra qualcosa il numero di byte, grazie a chiunque vorra' rispondermi e spiegare.

4 Risposte

  • Re: Replica strcmp

    Strcmp restituisce un numero maggiore, minore o uguale a 0, non per forza 1 e - 1. È una banale differenza di codici ASCII, cioè di interi da 1 byte. Nel tuo caso 97 - 103.
  • Re: Replica strcmp

    invece di 1 o -1
    La strcmp non restituisce 1 o -1
  • Re: Replica strcmp

    Ah ok grazie mille .
  • Re: Replica strcmp

    Comunque, se vuoi che restituisca -1 0 1 allora termina la tua funzione con

    
        int res = *s1 - *s2;
        return (res ? (res<0 ? -1 : 1) : 0);
    
Devi accedere o registrarti per scrivere nel forum
4 risposte