[C] Concatenare due stringhe utilizzando i puntatori

di il
17 risposte

17 Risposte - Pagina 2

  • Re: [C] Concatenare due stringhe utilizzando i puntatori

    L'ABC del linguaggio c inizia proprio da quelle funzioni.
    
    int my_strcmp(char* a,char *b)
    {
        for (; *a != '\0' && *b != '\0' ; a++,b++)
        {
            if ( *a > *b)
                return 1;
            else if ( *a < *b)
                return -1;
        }
        if (*a != '\0') return 1;
        if (*b != '\0') return -1;
        return 0;
    }
    
    char* my_strcpy(char *d, const char *s)
    {
        while( (*d++ = *s++) != '\0');
        return d;
    }
    
    int my_strlen(const char *s)
    {
       const char* st=s;
       while( *s++ != '\0');
       return (s-st) - 1;
    }
    
    char* my_strcat(char *d, const char *s)
    {
        while( *d++ != '\0');
        d--;
        while( (*d++ = *s++) != '\0');
        return d;
    }
    
  • Re: [C] Concatenare due stringhe utilizzando i puntatori

    Abbiamo postato insieme e non ho visto la memcopy:
    void* my_memcopy(void* d, const void* s, size_t n)
    {
       char* cd = (char*)d;
       char* cs = (char*)s;
    
       for (; n > 0 ; n--,cd++,cs++)
            *cd = *cs;
    
       return d;
    }
  • Re: [C] Concatenare due stringhe utilizzando i puntatori

    Ciao ragazzi,
    allora propongo pure io una versione della memcopy:
    
    void* memcpy(void* dest, const void* src, size_t n)
    {
       char* s = (char*) src;
       char* d = (char*) dest; 
       char* e = s + n;
    
       while (s != e)
          *(d++) = *(s++);
    
       return dest;
    }
    
    Questa ha il vantaggio che durante il ciclo deve fare solo due incrementi (non incrementa n).
    Poi ci sono anche le versioni ottimizzate che copiano 4 byte alla volta.
Devi accedere o registrarti per scrivere nel forum
17 risposte