Dynamische Speicherreservierung auf ein ZeigerFeld



  • Ich sitze jetzt schon 2 Stunden an der gleichen Stelle.

    Ich möchte ein ZeigerFeld erstellen, es sollen Wörter eingegeben werden
    die dann weiter verarbeitet werden, das funktioniert auch.

    Allerdings möchte ich den Speicher je nach dem so viele Wörter man eingibt
    dynamisch erstellen.

    Reine Verständnis frage der legt ein ZeigerFeld an. mit MAXPOINTER, da reserviert der doch noch kein Speicherplatz oder. erst durch reserverirung
    mit malloc und danach die Eingabe des Strings.

    Hoffe das verständlich, wie ich das meine

    Ich glaub das ist ziehmlicher schrott da.

    void main (void)
    {
       int anzahl=0;
       char eingabe[255];
       char *ZeigerFeld[MAXPOINTER];
    
       do
       {
          cout<<"Wollen Sie noch ein Wort eingeben?"<<endl;
          cout<<"Die Eingabe wird mit [ESC] abgebrochen"<<endl;
          cout<<"Danach fängt die Sortierung an"<<endl;
    
          cin>>eingabe;
    
          ZeigerFeld[anzahl]=(char*)malloc(sizeof(char));
          ZeigerFeld[anzahl]=eingabe;
          anzahl++;
    
        }while(eingabe!="xSchluss");
    


  • pradox schrieb:

    Ich glaub das ist ziehmlicher schrott da.

    Aber hallo...

    1. void main(void) wird zwar oft gesehen, es ist aber trotzdem falsch. Es gibt 3 Möglichkeiten:
    - int main()
    - int main(void)
    - int main(int argc, char** argv) //oder äquivalente Schreibweise
    2. C++ (cout) mit C (malloc) zu vermischen macht man nicht.

    Und wie man mit malloc() richtig Speicher reserviert habe ich hier gerade beschrieben...



  • Da du ja schon cout benutzt, empfehle ich dir erstmal, vector zu benutzen.

    #include <vector>
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main() 
    { 
      vector<string> Stringfeld;
    
      while(1)
      {
        string eingabe;
    
        cout<<"Wollen Sie noch ein Wort eingeben?"<<endl; 
        cout<<"Die Eingabe wird mit [ESC] abgebrochen"<<endl; 
        cout<<"Danach fängt die Sortierung an"<<endl; 
    
        cin>>eingabe; 
        if (eingabe==string("xSchluss")) break;
           Stringfeld.push_back(eingabe);
       }; 
    
       for(int i=0;i<Stringfeld.size();i++)
         cout << Stringfeld[i] <<endl;
    }
    
    while(eingabe!="xSchluss");
    

    Das geht so übrigens nicht, da du hier zwei Zeiger vergleichst.



  • TactX schrieb:

    pradox schrieb:

    Ich glaub das ist ziehmlicher schrott da.

    Aber hallo...

    1. void main(void) wird zwar oft gesehen, es ist aber trotzdem falsch.



  • ups sorry inet lagt wiedermal



  • Und was wolltest du uns über das laggende Internet sagen? 😉


Anmelden zum Antworten