[gelöst] Zweidimensionales char Array kopieren
-
Hallo folgendes Problem:
Ich hab die beiden Felder:
char hilf_world[XRANGE][YRANGE]; char world[XRANGE][YRANGE];
char world ist das Spielfeld für eine Konsolenbasiertes Robots-spiel. Und wird wie folgt initialisiert:
for (x=0; x<XRANGE; x++) for (y=0; y<YRANGE; y++) world[x][y] = WALL; for (x=1; x<XRANGE-1; x++) for (y=1; y<YRANGE-1; y++) world[x][y] = EMPTY;
WALL stellt dabei das Zeichen # dar und EMPTY ist "."! Nun werden verschiedene Spielzüge gemacht und an manchen Stellen ist es nötig das Feld world in einem Hilfsfeld hilf_world abzuspeichern. Ist das mit strcpy irgendwie möglich. Das ich das nämlich an mehreren Stellen brauch möchte ich das nicht noch durch weitere forschleifen realisieren da es sonst nur so davon wimmelt in der Funktion und die Laufzeit dadurch wohl auch beträchtlich erhöht wird. Bitte um eure Hilfe. Besten Dank.
Gruß Danjo
-
strcpy() kannst du hier schlecht verwenden - das benötigt ein '\0' am Ende der Daten (und deine Datenstruktur sieht nicht so aus, als ob sie Nullterminiert ist). Aber versuch's mal mit memcpy() stattdessen.
(aber wahrscheinlich ist es effizienter, wenn du auf das kopieren ganz verzichtest - was machst du genau mit dem Hilfs-Array?)
-
Den Speicherbereich kopieren (memcpy()) wäre da sicher das schnellste, aber wenn du sagt "es wimmelt von for-Schleifen" kann ich das nicht ganz nachvollziehen.
Lagere das Kopieren in eine Funktion aus, der du die Zeiger auf die Felder übergibst und los gehts ...
-
ohne schlefe gehts nicht.
du kannst es mit einer schlefe+memcpy loesen.
-
etti27 schrieb:
ohne schlefe gehts nicht.
du kannst es mit einer schlefe+memcpy loesen.Schwachfug. Wenn man memcpy() verwendet braucht es keine Schleife.
-
Bist Du sicher, dass Teil-Arrays hintereinanderliegen?
Wenn sie statich sind(char array[n1][n2]) dann mag das noch stimmen, aber bei char **array ??wenn man es sicher machen will, geht es nicht ohne schleife.
Wenn man nur statische arrays benutzt(ohne malloc) dann schon.
-
etti27 schrieb:
Bist Du sicher, dass Teil-Arrays hintereinanderliegen?
Wenn sie statich sind(char array[n1][n2]) dann mag das noch stimmen, aber bei char **array ??Ja, ich bin mir sicher dass "Teil-Arrays" hintereinanderliegen. Das ist quasi die Definition eines Arrays.
Und ein char** ist _kein_ Array.
-
TactX schrieb:
Ja, ich bin mir sicher dass "Teil-Arrays" hintereinanderliegen. Das ist quasi die Definition eines Arrays.
Jupp, aus dem Grund kann man ja zum Beispiel durch Addition eines Wertes auf den Zeiger einen Wert im Array ansprechen, der "weiter hinten" steht.
-
Danke für die Antworten. Hab es mit for-Schleifen realisiert. Sind doch nicht so viele geworden wie ich gedacht hab. Hab noch etwas optimieren können.
Gruß Danjo
-
OMFG ROFL
es geht auch kompliziert