Copiare i dati da un array all'altro

di il
4 risposte

Copiare i dati da un array all'altro

Ciao a tutti,
la questione è semplice, non penso che ci sia bisogno di postare il codice. Se ho, per esempio, un array di cinque caselle con dentro i numeri 1,2,3,4,5 e uno vuoto della stessa dimensione e tramite un ciclo di for voglio copiare (o spostare se è meglio) i miei numeri nelle stesse identiche posizioni all'interno del secondo array come posso fare? Qual'è la funzione da utilizzare con le relative librerie?
Grazie

4 Risposte

  • Re: Copiare i dati da un array all'altro

    Alla posizione i(contatore del ciclo for) del vettore vuoto assegni l'elemento alla posizione i del vettore da copiare
  • Re: Copiare i dati da un array all'altro

    Di base non serve alcuna funzione; basta copiare con b=a dove a è l'array soregente e b è l'array di destinazione; i deve andare da 0 a 4.
    Se proprio vuoi usare una funzione puoi provare memcpy()
  • Re: Copiare i dati da un array all'altro

    candaluar ha scritto:


    Di base non serve alcuna funzione; basta copiare con b=a dove a è l'array soregente e b è l'array di destinazione; i deve andare da 0 a 4.
    Se proprio vuoi usare una funzione puoi provare memcpy()


    Grazie, quindi ad esempio se avessi un ciclo for di questo tipo:
    for (i=0; i<n; i++)
    {
    a=b
    }

    Andrebbe bene? E se volessi invece riempire il secondo array mettendo quello che c'è in a nella posizione 0 in b alla posizione 4?
  • Re: Copiare i dati da un array all'altro

    Basta "giocare" con gli indici, non è difficile.
    In questo esempio inverto delle stringhe, ma puoi fare la stessa cosa con qualsiasi tipo di dati:
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    /*==============================================================================
    Copia la stringa di lunghezza l puntata da orig nello spazio di memoria puntato
    da dest, invertendo l'ordine dei caratteri.
    ==============================================================================*/
    
    int aipoc( char *dest, const char *orig, size_t l ) {
        if( orig && dest ) { /* controlla i parametri */
            size_t i;
    
            for( i=0; i<l; ++i ) dest[l-i-1] = orig[i];
    
            return 1; /* 1: bene */
        }
    
        return 0; /* 0: errore */
    }
    
    /*==============================================================================
    Inverte l'ordine dei caratteri nell'ambito della stringa di lunghezza l
    contenuta nello spazio di memoria puntato da s.
    ==============================================================================*/
    
    int itrevni( char *s, size_t l ) {
        if( s ) { /* controlla il parametro */
            size_t i;
            char aux;
    
            for( i=0; i<l/2; ++i ) {
                aux = s[i];
                s[i] = s[l-i-1];
                s[l-i-1] = aux;
            }
    
            return 1; /* 1: bene */
        }
    
        return 0; /* 0: errore */
    }
    
    /*==============================================================================
    Programma d'esempio che usa aipoc() e itrevni().
    ==============================================================================*/
    
    int main() {
        char s1[32] = "l'inferno sono gli altri";
        char s2[32] = "";
        size_t l = strlen( s1 );
    
        /* mostra le due stringhe nella loro versione originale */
        printf( "\n%s", "s1 e s2 originali" );
        printf( "\nstringa 1: \"%s\"", s1 );
        printf( "\nstringa 2: \"%s\"\n", s2 );
    
        /* copia s1 in s2, invertendone l'ordine dei caratteri */
        aipoc( s2, s1, l );
        /* mostra le due stringhe */
        printf( "\n%s", "applicazione aipoc( s2, s1 )" );
        printf( "\nstringa 1: \"%s\"", s1 );
        printf( "\nstringa 2: \"%s\"\n", s2 );
    
        /* inverte "in place" l'ordine dei caratteri in s1 e s2 */
        itrevni( s1, l );
        itrevni( s2, l );
        /* mostra le due stringhe */
        printf( "\n%s", "applicazione itrevni( s1 ) e itrevni( s2 )" );
        printf( "\nstringa 1: \"%s\"", s1 );
        printf( "\nstringa 2: \"%s\"\n", s2 );
    
        getchar();
        return 0;
    }
Devi accedere o registrarti per scrivere nel forum
4 risposte