Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    6

    copiare spazio di memoria C

    Ciao a tutti,
    sto lavorando in c con una lista

    typedef struct person
    {
    char *name;
    char *surname;
    .......
    struct peson *next;
    } person;

    la quale voglio riempire con i dati di ogni persona. Il mio problema è che non riesco ad allocare una spazio di memoria differente per i dati di ogni persona, e quindi ogni volta mi sovrascrivo i dati precedentemente salvati.

    Il codice che uso per salvare i dati di ogni persona è il seguente:


    person *first = NULL, *last;

    for(per ogni persona)
    {
    char* name;
    char* surname;

    //acquisisco in name e surname i dati della nuova persona
    //.................

    newperson->name = name;
    newperson->surname = surname;

    if(first == NULL)
    {
    first = newperson;
    }
    else
    {
    last->next = newperson;
    }
    last = newperson;
    }

    IMPORTANTE: faccio un ciclo per acquisire name e surname e quindi due puntatori a ogni ciclo sono sovrascritti

    quello che non riesco a fare è creare una zona differente di memoria ad ogni ciclo e passare alla mia lista
    l'indirizzo di tale locazione.

    Spero di essere stato abbastanza chiare.

    Grazie a chi risponderà in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    usa i tag code per il codice.
    Mi sovviene una domanda, come chiedi lo spazio per la tua struttura alla memoria? Staticamente o dinamicamente? In pratica istanzi un vettore di persona oppure fai una alloc?
    perché nel codice da te scritto non vedo nessuna delle due opzioni

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    6

    Risolto

    Dinamicamente con un malloc. Comunque ho risolto il problema con un strcpy.
    Praticamente allocavo la memoria e invece di copiare la mia stringa nella zona allocata passavo al mio puntatore l'indirizzo della zona che volevo copiare invece che copiarla davvero.
    E quindi ogni volta la zona di memoria dove risiedevano i data veniva sovrascritta.
    Grazie comunque.
    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.