string->int
-
Hallo,
ich möchte aus einem
char szBuffer[5]
, also letztlich einem String, in dem eine Zahl steht, diese Zahl herauslesen und in einem Integer speichern. Hat jemand eine kluge Lösung?
Danke,
Sebastian
-
Wenn nur die Zahl drinnen Steht könntest du ein
atoi() oder atof() nehmen.
atoin spuckt einen Integer, atof eine float aus.Wenn an einer bestimmten Stelle nur eine Zahl steht kannst auch
Zahl = szBuffer[2]; machenmfg
Noob
-
Cool, danke.
-
Original erstellt von <Noob>:
...Wenn an einer bestimmten Stelle nur eine Zahl steht kannst auch
Zahl = szBuffer[2]; machen ...Besser:
Zahl = szBuffer[2] - '0';
sonst bekommt man den Zahlenwert eines Zeichens ....
-
Wenn du mehrere Sachen aus nem String auslesen willst, machs so:
char *string; . . . sscanf(string,"%d",&zahl); . . .
-
Danke für die vielen Antworten.
atoi tut inzwischen Wunderbar seinen Dienst...
Gruss,
Sebastian
-
passend zu diesem thema:
weiss jemand, wie man strtol verwendet, um string in int umzuwandeln?(mit beispiel?)
danke
-
@peter pan
strtol ist für string nach long int.Ansonsten schau dir mal die Manpage an
STRTOL(3) Linux Programmer's Manual STRTOL(3)
NAME
strtol - convert a string to a long integer.SYNOPSIS
#include <stdlib.h>long int strtol(const char *nptr, char **endptr, int base);
DESCRIPTION
The strtol() function converts the string in nptr to a
long integer value according to the given base, which must
be between 2 and 36 inclusive, or be the special value 0.The string must begin with an arbitrary amount of white
space (as determined by isspace(3)) followed by a single
optional+' or
-' sign. If base is zero or 16, the
string may then include a0x' prefix, and the number will be read in base 16; otherwise, a zero base is taken as 10 (decimal) unless the next character is
0', in which case
it is taken as 8 (octal).
The remainder of the string is converted to a long int
value in the obvious manner, stopping at the first charac
ter which is not a valid digit in the given base. (In
bases above 10, the letterA' in either upper or lower case represents 10,
B' represents 11, and so forth, with
`Z' representing 35.)If endptr is not NULL, strtol() stores the address of the
first invalid character in *endptr. If there were no dig
its at all, strtol() stores the original value of nptr in
*endptr (and returns 0). In particular, if *nptr is not
\\0' but **endptr is
\0' on return, the entire string is
valid.RETURN VALUE
The strtol() function returns the result of the conver
sion, unless the value would underflow or overflow. If an
underflow occurs, strtol() returns LONG_MIN. If an over
flow occurs, strtol() returns LONG_MAX. In both cases,
errno is set to ERANGE.ERRORS
ERANGE The given string was out of range; the value con
verted has been clamped.CONFORMING TO
SVID 3, BSD 4.3, ISO 9899SEE ALSO
atof(3), atoi(3), atol(3), strtod(3), strtoul(3)BUGS
Ignores the current locale.GNU 1995-06-10 STRTOL(3)