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
 

XHelp

Top Contributor
Code:
sizeof(some_array)
sizeof(some_array[0])
(eher vermutet)
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
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
 

AmunRa

Gesperrter Benutzer
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:

AmunRa

Gesperrter Benutzer
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.
 

hartzie

Aktives Mitglied
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.
 

ARadauer

Top Contributor
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");
   }
 

hartzie

Aktives Mitglied
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]
.
 

fastjack

Top Contributor
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.
 

Andi_CH

Top Contributor
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.
 

Simon_Flagg

Bekanntes Mitglied
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
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Programmieren eines Spieles Softwareentwicklung 25
J Programmierung eines MazeGames Softwareentwicklung 1
G Anzahl der Rekursionsaufrufe eines DFS Algorithmus Softwareentwicklung 16
F Planung und Durchführung eines Projektes Softwareentwicklung 2
A Händische Programmierung eines 1:n-ORM Softwareentwicklung 3
? Fragen zur richtigen Umsetzung eines Projektes Softwareentwicklung 3
M Ada95 - Breite eines Baumes bestimmen Softwareentwicklung 3
B Konstruktion eines Epsilon Automaten & NFA Softwareentwicklung 2
B Signatur eines Abstrakten Datentyps Softwareentwicklung 10
F Aufwändes eines Software Projektes Softwareentwicklung 21
M Technische Abwicklung eines Onlinekaufs Softwareentwicklung 7
-horn- "Laufzeitberechnung" eines Programmes? Softwareentwicklung 5
U Komplexität eines Algorithmus Softwareentwicklung 1
Z Herangehensweise zum "entschlüsseln" eines Dateifo Softwareentwicklung 2
G Modellierung eines graphentheoretischen Problems Softwareentwicklung 5
V alle abgeleiten Klassen eines Interfaces finden? Softwareentwicklung 2
I Object mit Hilfe eines Class-Objectes instanzieren Softwareentwicklung 3
M Elemente eines Vektors zufällig anordnen Softwareentwicklung 2
M Software zur Erstellung eines Pflichtenhefts? Softwareentwicklung 15
F Zellen eines Excel-Sheets per VBA disablen (ausgrauen)? Softwareentwicklung 10
H Synchronisation eines Bitstreams Softwareentwicklung 4
B Programmierung eines 8051-Assemblers unter Java Softwareentwicklung 3
F Ist der Name eines Ojekts eine Eigenschaft Softwareentwicklung 7

Ähnliche Java Themen


Oben