Okay, so ist hier mein Problem:Wie kann ich eine Struktur mit den Werten einer identischen Struktur innerhalb einer Funktion füllen?
1) Ich habe sagen eine Struktur definiert wie folgt aus:
/* Declare structures */
model_t candidate_mod, current_mod, empty_mod;
3):
struct minos_model
{
int ifanis, ifdeck, npts, icb, cmb, noc;
double tref;
double r[MODEL_NPTS_MAX], rho[MODEL_NPTS_MAX], vpv[MODEL_NPTS_MAX], vsv[MODEL_NPTS_MAX],
qk[MODEL_NPTS_MAX], qmu[MODEL_NPTS_MAX], vph[MODEL_NPTS_MAX], vsh[MODEL_NPTS_MAX], eta[MODEL_NPTS_MAX];
char model_name[MODEL_LINE_LEN];
};
typedef struct minos_model model_t;
2) ich einige Strukturen dieser Form erklärt haben, Ich übergebe sie dann in eine Funktion, die als etwas wie folgt deklariert ist:
4) Ich rufe dann die Funktion so auf:
perturb_model(&candidate_mod, ¤t_mod, &empty_mod);
// arguments passed as pointers
Also das obige ist eine vereinfachte Version von dem, was ich getan habe. Ich versuche (on line markiert DIESE LINE in Schritt 3), um candidate_mod zu einer anderen Struktur (current_mod) zu setzen, würde ich eine Schleife verwenden, aber eins, das scheint unelegant, zwei, manchmal die Struktur, ich setze es gleich (current_mod) enthält weniger Werte (als candidate_mod) und als solches bin ich besorgt, dass die überschüssigen Werte von der ursprünglichen Struktur (candidate_mod) verbleiben würden.
Ich sollte auch erwähnen, da es vielleicht relevant ist, dass die Funktion in einer separaten c-Datei im Makefile verlinkt ist, also vielleicht gibt es eine Schwierigkeit mit globalen teilen .. aber ich denke, übergeben Sie den Zeiger als Argument sollte löse das?
Auch scheint es aus meiner Forschung, dass vielleicht die Verwendung von extern helfen könnte, obwohl ich nicht herausfinden kann, wie nach vielen Versuchen.
Wenn jemand den besten Weg erklären könnte, wäre ich sehr dankbar !! Ich weiß, wie es in meinem Hauptcode trivial ist, aber die Strukturen müssen so innerhalb der Funktion zugewiesen werden.
Prost.
Ignorieren der massiven Details und Blick auf den Titel der Frage. Setzen Sie sie einfach mit 'structB = structA' gleich, solange Sie nicht nur Zeiger gleichsetzen, in diesem Fall sollte es '* structB = * structA' sein. –