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]; machen

    mfg
    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 a 0x' prefix, and the number will be read in base 16; otherwise, a zero base is taken as 10 (decimal) unless the next character is0', 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 letter A' 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 9899

    SEE ALSO
    atof(3), atoi(3), atol(3), strtod(3), strtoul(3)

    BUGS
    Ignores the current locale.

    GNU 1995-06-10 STRTOL(3)


Anmelden zum Antworten