Gast
#2241923
Hallo, ich habe ein Char-Array, dass wie folgt aufgebaut ist: Test[20]="Var:00023blabla"; Wie kann ich nun den Zahlenwert, der immer an stelle Test[4]-Test[9] steht in eine int-Variable abspeichern??
|
Anzeige
|
Variable aus char-Array in int
Gast
#2241923
Hallo, ich habe ein Char-Array, dass wie folgt aufgebaut ist: Test[20]="Var:00023blabla"; Wie kann ich nun den Zahlenwert, der immer an stelle Test[4]-Test[9] steht in eine int-Variable abspeichern??
Gast
#2241939
Solange blabla Text ist:
Gast
#2241957
Danke, und wenn in blabla auch Zahlen sein können??
Gast
#2241975
Dann hilft evtl. intvariable = (int)strtol(Test+4,Test+8,10); die 8 bezieht sich auf das gegebene Beispiel, und nicht auf die Aussage, "..der immer an stelle Test[4]-Test[9] steht.."
Gast
#2241976
halt nee, ist Käse, was ich schrieb. Da kommt als zweites Argument ja ein Doppelpointer rein, der laut Manpage von strtol nur "endptr" heißt.
Gast
#2241978
strtol und atoi brechen beim ersten Zeichen, das nicht zu einer Ganzzahl passt, ab. Bei sscanf kann man die Anzahl der Zeichen begrenzen: sscanf(Test+4,"%5d", &intvariable ); oder wenn du Test nicht mehr brauchst, kannst du vorher auch Test[9] = '\0'; schreiben (da ist der String dann zu Ende). @Holger Das geht so nicht! strtol erwartet als zweiten Parameter ein char** oder NULL. Der zeigt an, an welcher Stelle strtol nicht mehr weiterkommt.
Gast
#2241979
Eine Lösung wäre, Test[10] = 0; bevor Du strtol anwendest. Falls Test nicht verändert werden soll vorher in ein temporäres Array kopieren und die Aktion darauf anwenden.
Gast
#2241983
@DirkB Yep, hatte etwas schnell die Manpage überflogen. Sorry! Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|