C/C++ Char/ Array erweitern



  • Hi
    Ich habe einen char mit der länge von 80 definiert, der den Wert der eingabe des Users enhält. Nun möchte ich, dass diese Char mit sovielen 0 gefüllt wird, dass er ganz voll ist. Hier meine Versuche:
    1)

    char text1 [80]; 
    int nStrLen = strlen(text1);
    while (nStrLen != 80)
         {
               text1 +='0';
               nStrLen = strlen(text1);
               cout << text1 << nStrLen;
               }
    
    char text1 [80]; 
    int nStrLen = strlen(text1);
    
    while (nStrLen != 80)
         {
               text1[nStrLen]='0';
               nStrLen = strlen(text1);
               cout << text1 << nStrLen;
               }
    

    hat jemand eine Idee, wie das Funktionieren könnte? 😕



  • #include <iostream>
    
    int main()
    {
        char text1[80];
        for(int i = 0; i < sizeof(text1); i++)
        {
            text1[i] = '0';
        }
    }
    

    Noch nie was von for-Schleifen gehört ?



  • Zitat aus meinem C++ Buch:"Arrays und for-Schleifen gehören einfach zusammen" 😉
    Aber:
    Du sagtest ja die restlichen Stellen...sagen wir mal deine ersten 20 Stellen sind besetzt, dann musst du 'i' in der for-Schleife am anfang auf 20 stellen!
    (ja auf 20, nicht auf 21...der Array fängt bei 0 an zu zählen!) 🙂



  • Vielleicht so?

    for(int i = strlen(text1); i < 80 ; i++){
       text1[i] = '0';
    };
    


  • Danke ich habs hinbekommen. 😃

    int i=sizeof(text1);
               i += 1;
               for(i; i <80; i++) 
        { 
            text1[i] = '0'; 
        }
    


  • ...oder die Kurzversion:

    int main()
    {
        char text1[80] = {};
    }
    

    Sonst gibt's noch folgendes, mit dem man, nachdem das Array schonmal initialisiert und vollgeschrieben wurde, wieder mit Nullen auffüllen kann:

    #include <algorithm>
    int main()
    {
        char text1[80];
        std::fill(text1,text1+80,char(0));
    }
    

    Gruß,
    SP


Anmelden zum Antworten