Zeichenkette einlesen .....



  • Hallo Leute!
    Ich habe hier ein Problem. Beim Compilieren sagt es das es keine Fehler gibt will ich es aber ausführen stürzt das Programm ab. Vielleicht könnt ihr mir ja helfen

    #include<stdio.h>
    #include<stdlib.h>
    
    void main()
    {
    char *laufzeiger;
    int i=0;
     *laufzeiger='z';
    
    while (*laufzeiger != '\n')
     {
    	*laufzeiger=getchar();
    	 laufzeiger=laufzeiger+1;
    	 i++;
     }
    }
    

    Vielleicht könnt ihr mir auch noch sagen wie ich ein Array einlesen kann dessen Dimensionierung noch nicht bekannt ist!

    Danke im Vorraus und Gruß
    Murphy



  • Kurz und schmerzlos: Nimm strings.

    Dein char Array ist nicht nullterminiert, sondern du packst bloß ein einzelnes Zeichen rein (mit den ')
    Außerdem hat dein Array noch gar keinen Speicher.

    Du kannst Arrays dadurch dynamisch machen, dass du den Speicher mit new
    reservierst.



  • könnte ich machen aber ich muss aus der eingelesenen Zeichenkette den ersten und den letzten Eintrag mit einem Zeiger makieren und den größten und kleinsten.

    oder kann ich das mit string auch?

    Murphy



  • Kannst du sicherlich auch.
    Weiß zwar nicht, was du mit größten/kleinsten meinst.

    Aber du kannst auf die einzelnen Buchstaben mit [] zugreifen.
    Oder auch über Iteratoren.



  • hmm ... ich weiß aber leider nicht wie man das mit strings macht!
    kannst du mir ein Beispiel geben?
    mit größten um kleinsten mein ich die ASCII Reihenfolge

    a < u , z > u .... usw



  • #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main() 
    { 
      string Kette;
      size_t k=0,g=0;
    
      cin >> Kette;
    
      for (size_t i=0; i<Kette.length(); i++)
      {
        if (Kette[i] < Kette[k]) k=i;
        if (Kette[i] > Kette[g]) g=i; 		
      }
    
      cout << "Kleinster Buchstabe:" << Kette[k] <<endl;
      cout << "Groesster Buchstabe:" << Kette[g] <<endl;
    }
    

    g und k sind hierbei aber keine richtigen Zeiger, sondern die Nummer der Buchstaben.



  • ok !
    danke für deine Mühe!

    wie kann ich einem Zeiger sagen das er um eine Speicherstelle nach oben gehen soll! so wie bei i++;



  • Na Zeiger in dem Sinne sind es ja nicht.
    Aber auch size_t ist eine Zahl, die einen konkreten Nachfolger hat.

    Also geht auch k++; //für k=k+1;



  • danke !



  • #include <iostream>
    #include <string>
    #include <algorithm>
    
    using namespace std;
    
    int main()
    {
      string kette;
      cin >> kette;
      cout << endl << "Sie haben dieses hier eingegeben: " << endl << kette << endl;
    
      string::iterator min  = min_element(kette.begin(), kette.end());
      string::iterator max  = max_element(kette.begin(), kette.end());
    
      cout << "kleinster Buchstabe: " << (*min) << endl;
      cout << "groesster Buchstabe: " << (*max) << endl;
      cout << "ersten Buchstabe: " << *(kette.begin()) << endl;
      cout << "letzer Buchstabe: "  << *(kette.end() -1) << endl;
    
      return 0;
    }
    


  • sagt mal , könnt ihr das auch nochmal mit printf() und getchar() Befehlen schreiben! 😃

    Ich wäre euch sehr zu Dank verpflichtet! 👍

    MFG
    Murphy


Anmelden zum Antworten