WIESO GEHT DAS NICHT???



  • Ich will eine Zahl mit strtok in ihre Ziffern aufteilen aber das geht nicht 😞

    #include <strtok>

    int main(){
    int i;
    char*zahl = 1234;
    char ziffer;
    i=0;
    while (i<=30)//das reicht doch?
    {ziffer=strtok(zahl);
    }
    }

    WAS MACH ICH FALSCH?? 😕



  • Erstmal ist 1234 kein String-Literal und kann auch nicht an ein char* zugewiesen werden.

    Zweitens muß man: strtok() noch wissen, was es als Trennzeichen nehmen soll.

    Drittens ist strtok() wohl etwas übertrieben für deinen Zweck - wenn du einzelne Ziffern aus einer Zahl rausholen willst, kannst du mit Index-Operator (bei Zahl in String-Form) oder einer Kombination aus Division und Modulo (bei Zahl als int-Wert) besser vorankommen.

    PS: Und viertens gibt es keinen Header namens <strtok> 😉



  • int main(){ 
    int i; 
    char zahl[5]= "1234"; 
    char ziffer; 
    i=0; 
    while (i<strlen(zahl))//das reicht doch? 
    {
    ziffer=zahl[i++]; 
    //Konstrole
    printf("%c\n",ziffer);
    } 
    }
    


  • BorisDieKlinge schrieb:

    int main(){ 
    int i; 
    char zahl[5]= "1234"; 
    char ziffer; 
    i=0; 
    while (i<strlen(zahl))//das reicht doch? 
    {
    ziffer=zahl[i++]; 
    //Konstrole
    printf("%c\n",ziffer);
    } 
    }
    

    Ich muss doch später eine Zufallszahl nemnen :(, da geht das doch nicht mit dem ""



  • statt

    acZahl[5]="1234";
    

    einfach

    int iZufall=random();
    char acZahl[255]="";
    sprintf(acZahl,"%s\x0",iZufall);
    


  • Oder du verwendest Dezimal-Operatoren, damit sparst du dir auch das Umwandeln in einen String:

    int value=random();
    for(int i=1;i<value;i*=10)
    {
      ziffer=(value/i)%10;
      ...
    }
    

    (das liefert die Ziffern von hinten nach vorne - also mit den Einern beginnend)



  • CStoll schrieb:

    Oder du verwendest Dezimal-Operatoren, damit sparst du dir auch das Umwandeln in einen String:

    int value=random();
    for(int i=1;i<value;i*=10)
    {
      ziffer=(value/i)%10;
      ...
    }
    

    (das liefert die Ziffern von hinten nach vorne - also mit den Einern beginnend)

    Und in welchem Include ist random??

    Ich hab das jetzt so:

    #include <strtok>
    int main(){
    int i;
    int zahl=random();
    for(int i=1;i<value;i*=10)
    {
      ziffer=(value/i)%10;
      ...
    }}
    

    Ist ... eigentlich ein C++-Befehl oder muss ich da was ändern?



  • random() mußt du selber schreiben oder suchen - im ANSI-Standard gibt es nur rand() aus der <cstdlib>.

    PS: das "#include <strtok>" ist immer noch Unsinn.


Anmelden zum Antworten