problem mit anfänger frage im bereich zeiger + charArrays



  • Also ich bin noch recht neu im Gebiet der Zeiger unterwegs.
    Und jetzt wollte ich einen Code schreiben der eine Zeichenkette Buchstaben für Buchstaben in den ASCII code zerlegt und ausgibt:

    sprich wenn Eingabe "abc" dann eben 979899 ausgeben.

    Doch ich schaff es irgendwie nicht kann mir da jemand vll. helfen und zwar will ich es ohne strings machen mit einem chararray

    Aber ich kann nichts eingeben und die Ausgabe ist auch immer ganz komisch immer so 51-51-51-51....

    bool bZeichkette(){
    	int iLaenge = 0;
    
    	cout << "Geben Sie die L" << char(132) << "nge der Zeichenkette ein" << endl;
    	if(!(cin >> iLaenge))
    		return false;
    
    	char *cZeichenkette = new char[iLaenge];
    
    	cin.getline(cZeichenkette, sizeof(cZeichenkette));
    
    	cout << "Die Zeichenkette in Zahlen lautet: ";
    	for(int i = 0; i < 49; i++){
    		cout << (int)cZeichenkette[i];
    	}
    
    	return true;
    }
    

    EDIT: ich habe den Fehler lag nicht an irgendwelchen zeigern sondern vielmehr daran, dass ich cin.sync() vergessen hatte 😛



  • Falsches Forum, C++ wäre korrekt. Hier ist C++/CLI, eine .NET Sprache.



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ (auch C++0x) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    sizeof(cZeichenkette) ist die Größe eines Pointers. Du kennst die Länge doch schon, du hast sie vorher doch abegefragt!

    Woher kommt in der for-Schleife die 49? Du kennst die Länge doch schon! Und wenn du schon mit char-Arrays arbeitetest, dann kannst du auch nutzen, dass getline das letzte Zeichen auf 0 setzt und dies als Abbruchbedingung nimmt. Das ist dann der C-Stil zur Verarbeitung von Zeichenketten.

    Apropos C-Stil: Nimm doch lieber C++-Casts.

    Apropos Stil: Ungarische Notation? Wurdest du irgendwie in den 1970ern eingefroren und jetzt wieder aufgetaut?


Anmelden zum Antworten