Zeichenkette



  • Hallo!

    Wollte ohen strcopy eine Zeichenkette in eine andere kopieren. Allerdings mache ich irgendwas falsch und es kommt nur "Müll" raus. 🙄 Hier mein Code:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main () {
    	int i, j;
    	int laenge;
    	char ausgabe[10];
    	char eingabe[10];
    	cout << "Eingabe:" << endl;
    	cin >> eingabe;
    	laenge = strlen (eingabe);
    	for (i = 0; i <= laenge; i++)
    		for (j = 0; j <= laenge; j++)
    			eingabe[i] = ausgabe[j];
    	cout << "Ausgabe: " << ausgabe << endl;
    
    	return 0;
    }
    

    Wer kann helfen?

    Gruß, sole2202



  • Hallo

    eine Schleife reicht aus.

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main () {
        int i, j;
        int laenge;
        char ausgabe[10];
        char eingabe[10];
        cout << "Eingabe:" << endl;
        cin >> eingabe;
        laenge = strlen (eingabe);
        for (i = 0; i <= laenge; i++)
          ausgabe[i] = eingabe[i];
        cout << "Ausgabe: " << ausgabe << endl;
    
        return 0;
    }
    

    /Edit : und natürlich eingabe und ausgabe in der Zuweisung austauschen.

    bis bald
    akari



  • Danke! Und wenn ich das jetzt umdrehen will, muss ich das doch mit zwei Schleifen machen, oder?

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main () {
    	int i, j;
    	int laenge;
    	char ausgabe[10];
    	char eingabe[10];
    	cout << "Eingabe:" << endl;
    	cin >> eingabe;
    	laenge = strlen (eingabe);
    	for (i = 0; i <= laenge; i++)
    		for (j = 9; j <= 9-laenge; j--)
    			ausgabe[i] = eingabe[i];
    			eingabe[i] = ausgabe[j];
    	cout << "Ausgabe: " << ausgabe << endl;
    
    	return 0;
    }
    


  • Hallo

    nein, du drehst du Zuweisung einfach um :

    for (i = 0; i <= laenge; i++)
        ausgabe[i] = eingabe[laenge -i -1];
    

    Für die Zukunft : Wenn in einer Schleife oder Bedingung mehre befehle ausgeführt werden sollen, müßen Klammern um die Befehle, ansonsten wird nur der erste ausgeführt. Das ist ein sehr tückischer Logikfehler.

    bis bald
    akari



  • #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
      cout << "Eingabe:" << endl;
      string eingabe;
      cin >> eingabe;
      string ausgabe(eingabe.rbegin(), eingabe.rend());
      cout << "Ausgabe: " << ausgabe << endl;
    }
    

Anmelden zum Antworten