Array bis zu einem bestimten Punkt auslesen



  • Hallo,

    Wie kann ich ein Array nur bis zu einem von mir gesetzten \0 auslesen?

    Bsp.: Ich deklariere ein Arry welches 20 Elemnte aufnehmen kann. Nun wird durch die Eingabe des benutzers das Array mit 19 Elementen gefüllt und ausgegeben.

    Jetzt möchter der Benutzer das Programm wiederholen und gibt nur 10 Elemene ein.
    Nach den 10 Elementen würde ich ein \0 anhängen. Nur wie kann ich meiner for-Schleife sagen,dass sie nur bis zum Element, nämlich welxhes \0 ist, auslesen soll?



  • Na, indem du es in die Abbruchbedingung schreibst. Ne whileschleife WÄRE VLT: BESSER



  • Hmm? Also versteh nicht ganz was du willst

    char data[] = "Das ist ein String";
    char* ptr_pos = data[0];
    while (*ptr_pos) ++ptr_pos;
    

    dann zeigt ptr_pos auf das 1. Terminierungs-Zeichen ^^ Oder was willst du?



  • ^^ fast.

    Machen wir es so :> :

    #define MAX = 20
    
    char array[MAX];
    
    for(int i = 0; i < MAX; ++i)
    {
      cout << array[i]; 
    }
    

    Wenn der Benutzer einen satz eingibt wie: "das ist ein string." Sieht es noch gut aus.

    [d][a][s][][i][s][t][][e][i][n][][s][t][r][i][n][g][.][\0]

    Nun wird das Programm wiederholt und der benutzer wird erneut nach einer Eingabe gefragt.

    -> "hallo"
    -> ich setze nun nach "o" ein \0.

    [h][a][l][l][o][\0][][e][i][n][][s][t][r][i][n][g][.][\0]

    wie kann ich dann das \0 nach dem Hallo als Abbruchbedingung für die Schleife machen?

    ist data[0] nicht gleich das erste bzw. nullte Element im Array?



  • ich glaube ich habs ...

    for(int i = 0; i < 8; i++)
    						{
    							int v = 0;
    							while (testarray[i][v] != '\0')
    							{   
    								cout << testarray[i][v]; 
    								v++;
    							}
    							cout << endl;
    							v = 0;
    						}
    


  • Wieso selberbauen, was es schon gibt? Du suchst 'std::strlen'.



  • oder auch

    for(int i = 0; i<MAX && array[i]!='\0'; ++i)
    {
      cout << array[i];
    }
    


  • wenns einfach nur um die ausgabe geht, kannst das das array einfach so wie es ist nach cout schieben. und wie bereits erwähnt, liefert dir strlen die gewünschte info.



  • nene, ging nicht nur um die einfache Ausgabe, leider 😎

    habs aber dank euch hinbekommen, merci



  • Keydo schrieb:

    #define MAX = 20
    

    Bitte nicht.
    Ganz einfach: Makros sind nicht typsicher, werden vor dem eigentlichen Kompilieren ausgewertet (sprich, der Compiler sieht nicht den Makronamen sondern ueberall nur die 20, was das Debuggen bei groesseren Programmen schwierig gestalten kann) und machen allgemein tendenziell mehr Scherereien als man sich beim naiven Eintippen anfangs vorstellt. Deshalb lieber gleich so:

    const int MAX = 20;
    

    oder meinetwegen auch

    enum { MAX = 20 };
    

    Ist vom Tippaufwand die gleiche Groessenordnung, typsicher, dem Compiler auch zur Compilezeit bekannt usw.



  • Vorallendingen führt es zu einem Syntax-Fehler (das Gleichzeichen ist überflüssig).


Anmelden zum Antworten