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.