zweidimensionales array1 im zweidimensionales array2 speichern
-
Dave1990 schrieb:
Ich habe jetzt eine Lösung.
ist zwar unsauber aber ich kann damit weiter rechnen und das reicht mir auch.
Das finde ich nicht
, sondern
. Wenn dir unsaubere Lösungen reichen und du sogar noch damit zufrieden bist, wirst du damit später noch Probleme bekommen. Ich bin nicht hier, um dich zu erziehen, ich gebe dir diesen Kommentar nur mal so als Eigenerfahrung mit auf den Weg.
-
memcpy(&labn[0][0],&namen[0][3],6); memcpy(&labn[1][0],&namen[0][9],6); memcpy(&labn[2][0],&namen[0][15],6); memcpy(&labn[3][0],&namen[0][21],6); memcpy(&labn[4][0],&namen[0][27],6); memcpy(&labn[5][0],&namen[0][33],6);
Das meine ich
das muss jetzt natürlich noch variable gemacht werden aber sonst kann ich damit weiter rechnen
-
laenge=sqrt(strlen(namen[1])); printf("\n"); i2=3; for(i=0;i<6;i++){ memcpy(&labn[i][0],&namen[0][i2],laenge); i2=i2+6; }
-
laenge=sqrt((strlen(namen[0]))-4);// -4 da "L1=" "\0" // laenge mit wurzel berechnet da es quadratsiche labs sind printf("\n"); i2=3; for(i=0;i<laenge;i++){ memcpy(&labn[i][0],&namen[0][i2],laenge); i2=i2+laenge; }
so jetzt hab ich es aber endlich
-
Und jetzt kommt der angekündigte Schock:
SeppJ schrieb:
Insgesamt noch einfacher wäre es, die Daten ohne den unnötigen Zwischenpuffer direkt in lab einzulesen. Der Puffer dient schließlich nur dem Abschneiden des "L3=". Das können die Lesefunktionen aber auch direkt selber erledigen.
Wir sparen uns das alles und ersetzen den gesamten Code durch ein einfaches fscanf. Hier noch eine ganze Menge Boilerplatecode drumherum, aber der Kern der Sache ist Zeile 22, die all das erledigt, was hier auf 3 Seiten besprochen wurde:
#include <stdio.h> int main() { FILE *file; unsigned int which_lab; unsigned int lab_number; int found; char lab[6][6]; int x,y; if (!(file = fopen("test", "r"))) { puts("Datendatei nicht gefunden."); return 1; } puts("Welches Labyrinth?"); scanf("%u", &which_lab); for(found = 0; !found && fscanf(file, " L%u=%36[wksz]", &lab_number, lab[0]) == 2;) if (lab_number == which_lab) found = 1; if (!found) { printf("Labyrinth Nummer %u nicht gefunden.\n", which_lab); return 1; } puts("Labyrinth gefunden:"); for(x=0; x<6; ++x) { for(y=0; y<6; ++y) putchar(lab[x][y]); putchar('\n'); } return 0; }
Beispieldatendatei:
L1=wwwwwwwskkkwwwkwswwskwwwwwkkzwwwwwww L2=kkkkkkkswwwkkkwkskkswkkkkkwwzkkkkkkk L3=ssssssswssskkkskwkkwskkkkksszsssssss