const char* überprüfen...aber wie in schleife?



  • hallo,

    ich habe ne aufgabe, das eine Tele NUmmer eingeben werden soll, und ich folgender form wieder ausgebenen(am ende darf nie eine zahl alleine stehen):

    Beispiel Eingabe: 1234567
    BEispiel Ausgabe 12-34-567

    void ParseNumber(const char* number)
    {
     int len = strlen(number);
     int counter=0;
     if (len%2==0)
            {
            for(size_t i=0;i<len;++i)
                    {
                    if(counter==2)
                            {
                            cout<<"-";
                            counter=0;
                            }
                    cout<<number[i];
                    ++counter;
                    }
            }
     else
            {
             int ulen = len-3;
             for(size_t i = 0;i<ulen;++i)
                    {
                     if(counter==2)
                            {
                             cout<<"-";
                             counter=0;
                            }
                     cout<<number[i];
                     ++counter;
    
                    }
             for(size_t i=ulen;i<ulen+3;++i)
                    {
                     if(counter==2)
                            {
                             cout<<"-";
                             counter=0;
                            }
                     cout<<number[i];
                    }
            }
    }
    

    erste frage, ist das in ordnung so?

    so und nun mein problem:

    Ich möchte vorher prüfen, ob auch wirklich nur zahlen in dem const char* drin sind...aber wie mach ich das?

    bool CheckNumber(const char* number)
    {
     int len = strlen(number);
     for(size_t i=0;i<len;++i)
            {
             if(strcmp(number[i],  //aber hier kann ich ja nich jeden ASCII Code abfragen...
            }
    }
    

    wie mach ich das am besten??



  • if(nummer[i]>='0' && nummer[i]<='9') ...



  • hm...lol
    war irgendwie der meinung, bei char muss ich das mit strcmp machen... 🙄 😮



  • Nein, strcmp() vergleicht nur mit einer vorgegebenen Zeichenfolge - alles komplexere müsstest du mit einer eigenen for()-Schleife und zeichenweiser Überprüfung absolvieren (du könntest übrigens auch if(isdigit(nummer[i]))... verwenden).

    Plan B: Wechlse zu STL-Strings, damit wird die Überprüfung wesentlich einfacher:

    bool CheckNumber(const string& number)
    {
      return number.find_first_not_of("0123456789")==string::npos;
    }
    

Anmelden zum Antworten