String auf Zahlen überprüfen. Wie geht das?

also wenn ich jetzt
C:
...
int n= sscanf(&option[3],"%d", &zahl);
printf("\nZahl: %i Option %s Fehler: %i\n", zahl, &option[3], n);
...
angebe, ist Zahl = 2 Option = "5" Fehler = 1

jetzt soll in &option[3] nur noch "-w=" stehen und nicht "5"
 
Zuletzt bearbeitet:
Die Variable option wird doch von sscanf nicht verändert.

Wie bereits vorgeschlagen wurde:
C:
sscanf(..., "-w=%d", ...);
 
nein!! nur die Zahl verändert sich

Hab mal ausprobiert &option[3] -> Erg = "5", &option[2] -> Erg = "=5", &option[1] -> Erg = "w=5" und &option[0] -> Erg = "-w=5" einzugeben. Also ich kann durch die Indexangabe immer nur die ersten Zeichen weglassen, aber die 5 werde ich nicht los!
Ich muss es nur noch schaffen die 5 (letzte Zeichen) auszublocken
 
Was willst du denn jetzt wieder komisches machen?
Angenommen option ist "-w=5"
=>
option[0] -> -
option[1] -> w
option[2] -> =
option[3] -> 5
option[4] = \0
=>
&option[0] = -w=5
&option[1] = w=5
&option[2] = =5
&option[3] = 5
&option[4] =

Das ist alles.
 
Auszublocken? Was heißt das?
Und wie von Muepe32 gesagt, option wird nicht verändert.

Ich bin noch immer der Meinung, dass du da nichts ausblocken, sondern nur den Wert der Zahl wissen willst...
 
ich brauche doch nur -w= als einen String für eine IF-Abfrage

if(strcasecmp(&option[3], "-w=") == 0) und eine zahl für eine Schleife.

d.h. -w= soll in einer Variable stehen vom Typ char* und die dazugehörige zahl in einer anderen vom Typ int. Ich dachte mir so, das ich mit &option[3] nur die ersten3 Zeichen mit strcasecmp vergleichen kann ob dieser auch tatsächlich mit "-w=" übereinstimmt.

weil wenn option etwas andere beinhaltet, soll ein andere IF-Zweig ausgeführt werden
 
Zuletzt bearbeitet:
Du solltest möglicherweise manchmal andeuten, dass du jetzt plötzlich gar nichts mehr mit sscanf machst und von etwas komplett anderem redest, meine Kristallkugel ist nämlich gerade in Reparatur.

Wie du aber nun dein "-w=5" in den Teil "-w=" und 5 via sscanf aufteilst wurde dir mittlerweile des Langen und Breiten erklärt. Jetzt fehlt nur noch ein klein wenig Eigeninitiative von dir (Referenz durchlesen, Beispiele anschauen) um es in deinem Code umzusetzen.
 
beispiele sagen mir auch nur:

float f;
int i;
string the_string = "foo -3.6 fum dum 17";
sscanf(the_string, "foo %f fum dum %d", f, i);

-> http://docs.roxen.com/pike/7.0/tutorial/strings/sscanf.xml

so hatte ich es schon selber
-> int n= sscanf(option,"%s%d", zeichen, &zahl);
Das allerding hatte nicht funktioniert und daher immer noch meine selbe Fragerei. wie geht es richtig. ich kann dutzende gleiche Beispiele zitieren, die mir nicht weiter helfen. Buchzitat "C von A bis Z" sscanf(temp[schleife] ,"%s %s %1d", &name, &alter, &lohn);

da geht es doch auch! C ist einfach nur krank!
 
-> int n= sscanf(option,"%s%d", zeichen, &zahl);
Das allerding hatte nicht funktioniert

Du lernst es wohl nie.... "das funktioniert nicht" ist keine gültige Fehlerbeschreibung! Was macht dein Programm, welche Ausgabe erhälst du, wie sieht der Rest deines Codes aus, was steht in zeichen, was steht in zahl? Das mindestens gehört zu einer gültigen Fehlerbeschreibung!
 
Zurück