inne hat geschrieben: 30.06.2022 19:14:48
Meillo hat geschrieben: 30.06.2022 18:28:36
Bloss solltest du nicht die Magic Number 48 verwenden, sondern stattdessen
schreiben.
Danke für den Hinweis. Was ist der Unterschied zu 48, also der Hintergrund es so zu schreiben?
Es trifft alles zu was gegen Magic Numbers im Code spricht. (Dazu kannst du auch nochmal selber recherchieren.)
Wenn eine 48 im Code steht, dann musst du eigentlich einen Kommentar dazu machen, damit man weiss was die 48 bedeutet. Ich jedenfalls wuesste nicht was 48 bedeuten soll, wenn ich den Code nicht schon verstanden habe.
Wenn dein Programm nicht mit ASCII/Latin1/Unicode arbeitet, sondern auf einem System betrieben wird, das EBCDIC als Zeichensatz verwendet, dann funktioniert der Code mit der 48 nicht mehr (weil dort die 0 an der Stelle 240 ist), wohingegen der Code mit der Character-Konstante '0' weiterhin funktioniert.
inne hat geschrieben: 30.06.2022 19:14:48
inne hat geschrieben: 30.06.2022 13:43:04
Ein wirklich zweidimensionales Array ist das nicht (weil die Zeilen unterschiedlich lang sein koennen)
Müssen für den Terminus zweidimensionales Array die Zeilen immer gleichlang sein?
Fuer mich ist ein zweidimensionales Array eine Flaeche. `argv' ist aber effektiv ein Kamm mit unterschiedlich langen Zinken. Genau genommen ist `argv' -- wie seine Defintion auch sagt -- ein eindimentionales Array von Char-Pointern:
Ein `sizeof(argv[0])' liefert dir die Groesse des ersten Elements zurueck, was die Groesse eines Pointers auf deinem System ist (vermutlich 8 Bytes).
Ein `sizeof(arr[0])' liefert dir dagegen die Groesse einer Zeile eines zweidimensionalen Arrays (char arr[3][5]) zurueck.
Man kann mit einem eindimensionalen Array von Pointern auf weitere eindimensionale Arrays aber ein zweidimensionales Array simulieren. Entscheidend ist, dass in dem Fall die einzelnen eindimensionalen Arrays an verschiedenen Stellen im Speicher liegen (koennen), waehrend bei einem richtigen zweidimensionalen Array das ganze Array an einem Stueck hintereinander liegt.
inne hat geschrieben: 30.06.2022 19:14:48
Ich habe später zu meiner Lösung hierzu selbst noch Fragen, und ich hoffe ich kann die dann hier Stellen.
Aber noch weiss ich selbst nicht genau was ich dazu Fragen muss um es zu verstehen
Kein Problem. Vielleicht sollten wir dann den Thread aufspalten ...
inne hat geschrieben: 30.06.2022 19:14:48
Denn zumindest scheine ich keine Bytes (unnötig) zu kopieren wenn ich strtok und strlen nutze?
Ja.