[C] Felder überschreiben
jives 17.01.2006 - 17:52 746 4
jives
And the science gets done
|
Ich sitz schon länger an diesem Problem und komm auf keine vernünftige Lösung  Es geht darum, den Inhalt eines von Feld1 mit dem Inhalt von Feld2 zu überschreiben und zwar aus einer Funktion heraus. Feld1 ist eine Variable in main(), Feld2 eine Variable in long checkFeld(struct_t f[], long len);
An checkFeld wird Feld1 übergeben, sequenziell durchlaufen und nach bestimmten Kriterien der Inhalt von Feld1[i] nach Feld2[j] geschrieben. struct_t Feld2[NMAX];
long i = 0;
long j = 0;
for (i = 0; i < len; i++)
{
if (f[i].x == y || f[i].z < 0)
{
continue;
}
Feld2[j] = f[i];
j++;
}
/* Überschreibe Feld1 mit Feld2 */
return j;
Nachdem das passiert ist, soll Feld1 mit Feld2 überschrieben werden und genau da häng ich. Ich bin mir sicher, dass das mit Pointern zu bewerkstelligen sein muss, aber ich weiß einfach nicht wie ich das machen soll, außer mit for (i = 0; i < len; i++)
{
ptr1 = &f[i];
ptr2 = &Feld2[i];
ptr2 = &f[i];
ptr1 = &Feld2[i];
}
nur das kommt mir eher wenig optimal vor  Fällt jemandem eine Lösung ein? Ich hoff ich habs geschafft das Problem halbwegs verständlich zu beschreiben. Wenn nicht post ich noch schnell Codeschnipsel
Bearbeitet von jives am 17.01.2006, 18:26 (threadtitle)
|
mat
AdministratorLegends never die
|
Feld2[j] = f[i]; du überschreibst ja hier auch Feld2 mit "Feld1", wieso soll es umgekehrt nicht so funktionieren? du willst ja nur den inhalt kopieren.
|
jives
And the science gets done
|
Ich will ja Feld1 überschreiben, welches in main() verwendet wird. f ist ja eine lokale Variable in checkFeld(), da kann ich natürlich f = Feld2 schreiben, aber das bringt nix  Das war oben missverständlich geschrieben, sorry. Aber mir fällt gerade auf, dass ich in checkFeld() ja gar nicht auf (die Adresse) Feld1 zugreifen kann, oder?
|
mat
AdministratorLegends never die
|
nein, du übergibst der funktion checkFeld (deutsch-englisch mischmasch  ) den pointer, nicht das gesamte array (wäre auch unnötig bzw. falsch).
|
jives
And the science gets done
|
Habs schon, es lebe die Dummheit  Alles richtig machen und dann das Feld mit f = Feld2 überschreiben wollen kann man wohl nicht anders bezeichnen  Thx mat, durch deine Hinweise ist mir der Knoten aufgegangen  /edit In meinem Programm heißt die Funktion eh nicht so
|