Länge eines char[][]

Simon_Flagg

Bekanntes Mitglied
Wie kann man bei einem char[][] in c++ die anzahl der Spalten (erste []) herausfinden, wenn die Zeilen (zweite []) nicht alle gleich lang sind?

danke
 
Code:
sizeof(some_array)
sizeof(some_array[0])
(eher vermutet)
 
Zuletzt bearbeitet:
Mach eine for-Schleife und addiere die Länge aller Unterarrays zu einer Variable.
addieren??? Wer lesen kann ist definitv im Vorteil :-( das war nie gefragt.
Leute lest doch erst die Postings bevor ihr unpassende Antworten gebt!

"Spalten" ist bei einem Array ein undefinierter Begriff.

Die Anzahl der gespeicherten Element bekommt man mit .length - es spielt überhaupt keine Rolle was für Elemente das sind und ob überhaupt was drin ist (Wie die erste Zeile des Outputs zeigt - zu diesem Zeitpunkt ist noch 5 mal "null" drin)

Java:
public class Test1 {

	public static void main(String... args) {
		char[][] charArr = new char[5][];
		System.out.println("charArr.length = " + charArr.length);
		charArr[0] = new char[1];
		charArr[1] = new char[2];
		charArr[2] = new char[3];
		charArr[3] = new char[4];
		charArr[4] = new char[5];
		System.out.println("charArr.length = " + charArr.length);
		for (int i=0; i<charArr.length; i++) {
			System.out.println("charArr[" + i + "].length = " + charArr[i].length);
		}
	}
}

Output:
Code:
charArr.length = 5
charArr.length = 5
charArr[0].length = 1
charArr[1].length = 2
charArr[2].length = 3
charArr[3].length = 4
charArr[4].length = 5
 
Wer lesen kann ist definitv im Vorteil das war nie gefragt.
Diesen Rat kann ich nur zurückgeben, da hier nach c++ gefragt wurde und nicht nach java


ich glaub das wird recht schwierig,

um das ganze für ein eindimensionales Array zu machen, musst du es so errechnen.

Code:
sizeof(myArray) / sizeof(char)
und wahrscheinlich pro Zeile geht das dann auch noch so,

Code:
sizeof(myArray[i]) / sizeof(char)

dass Problem ist in diesem Fall dass wir aber keine Aussage treffen können über die Länge der Zeilen

sonst würds da wohl eher so iwie gehen

Code:
sizeof(myArray) / sizeof(myArray[0]);
ich hoffe das hilft dir iwie weiter, auch wenn ich mal vermute,dass du dies bereits alles gefunden hast.
 
Zuletzt bearbeitet:
Das ist hier die Ecke Softwareentwicklung wo explizit dabei steht, dass auch Fragen zu anderen Programmiersprachen hier her gehören. Also ist die Frage absolut berechtigt.
 
Um deine ursprüngliche Frage zu beantworten: Nein das wird schwierig. Mit sizeof wie du wahrscheinlich schon herausgefunden hast, kannst du nur die Gesamtanzahl von belegten Bytes herausfinden. Bei einem char-Array mit unterschiedlichen Längen kriegst du das mit sizeof nicht direkt so hin. Auf Umwegen geht es vielleicht, wenn du iterativ durch jede Spalte gehst und dann das von dem gesamten Speicherbedarf subtrahierst und dies solange machst bis du bei 0 ankommst, dann wiederum ist dein Laufindex deine Anzahl von Spalten.
 
Nein das wird schwierig.

Die Frage ist halt was ist die Frage.. :toll:
Also wenn man ein 2dim Array als Feld sieht, hat das natürlich zeilen und spalten. Wenn dann diese Zeilen unterschiedlich lange Spalten haben und man wissen will wie viele Spalten das Feld hat (also die Breite) ,dann sucht man einfach das Maximum...

Java:
   public static void main(String[] args) {
      int[][] feld = {{1,2,3},{4,5},{6,7,8,9}};
      int col = 0;
      for(int zeile = 0 ; zeile < feld.length; zeile++){
         if(feld[zeile].length>col)
            col = feld[zeile].length;
      }
      System.out.println(col+" Spalten");
   }
 
Ich möchte dich nur ungern darauf hinweisen, aber die Frage war wie man erst die Anzahl der Arrays in einem zweidimensionalen Array in C++ herausfindet. Wobei mir nebenbei aufgefallen ist, dass in C++ keine unsymetrischen Arrays gibt. Also du kannst nicht wie in Java sowas machen
Code:
int[][] feld = {{1,2,3},{4,5},{6,7,8,9}};
sondern musst immer das machen
Code:
char array[10][5]
.
 
also wenn ich nach "c++ array länge" google, bekomme ich über zwei Millionen Ergebnisse... mit verschiedenen Ansätzen die Länge eines Array (auch mehrdimensional) herauszufinden und nebenbei verschiedene c++-Foren.
 
Das ist hier die Ecke Softwareentwicklung wo explizit dabei steht, dass auch Fragen zu anderen Programmiersprachen hier her gehören. Also ist die Frage absolut berechtigt.
Mea culpa - ich habs mir gemerkt.

C++ bietet keine Möglichkeit herauszufinden wie lange ein Array ist, sonst könnte man ja nicht hemmungslos darüber hinaus iterieren.

Assymetrische Arrays gibt es schon - Das erste ist ein array von Pointern und die zeigen auf was auch immer sie wollen - That's C-Life 🙂 und C++ ist halt eben nur C mit etwas ++.

Aber eben - man muss sehr genau wissen wir lange jedes der Elemente ist - ist wohl kein gangbarer Weg.
 
also geht so was nicht, danke

@Amunra: danke, aber auf die idee bin ich schon selbst gekommen...
@hartzie: danke, so ginge es natürlich auch, ich hätte es mir nur so gewünscht, das es fe in eine Deklaration hineinpasst..., unsymmetrische arrays gehen... zb: char* texte[] = {"kleinererText", "wesentlichgrößererText"};
und dann int anzahlTexteInTexte[/*fehlendes*/];

@fastjack: hab ich auch schon probiert, passen nur alle nicht auf mein problem...

danke an alle für eure hilfe (wusste aber leider alles schon.....)

lg
 

Neue Themen


Zurück
Oben