Provided by: manpages-nl-dev_4.15.0-9_all bug

NAAM

       strtol, strtoll, strtoq - converteert een tekenreeks naar een lang geheel getal

SAMENVATTING

       #include <stdlib.h>

       long strtol(const char *restrict nptr,
                   char **restrict endptr, int base);
       long long strtoll(const char *restrict nptr,
                   char **restrict endptr, int base);

   Feature Test Macro´s eisen in  glibc (zie feature_test_macros(7)):

       strtoll():
           _ISOC99_SOURCE
               || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

BESCHRIJVING

       De  strtol()   functie  converteert  het initiële deel van een tekenreeks in nptr naar een
       lang geheel getal  met als grondtal  als  grondtal,  welk  moet  liggen  tussen  2  en  36
       (inclusief deze grenzen), of de speciale waarde 0.

       De  tekenreeks  mag  beginnen  met  een  willekeurig aantal witruimtes (zoals bepaald door
       isspace(3)) gevolgd door een enkel optioneel teken '+' or '-'. Als het grondtal nul of  16
       is,  dan  mag  de  string  "0x"  of  "0X"  bevatten  en wordt het getal gelezen met 16 als
       grondtal; in andere gevallen zal het grondtal 0 geïnterpreteerd worden als  10  (decimaal)
       behalve  als  het  volgende  teken  '0'  is, in welk geval het geïnterpreteerd wordt als 8
       (octaal).

       De rest van de tekenreeks zal geconverteerd worden naar een long waarde in de voor de hand
       liggende  manier,  eindigende  bij  het  eerste  ongeldige  teken in het gekozen grondtal.
       (Grondtallen groter dan 10, vertegenwoordigd de letter 'A'  in  zowel  hoofd-  als  kleine
       letter 10, 'B' vertegenwoordigd 11, en zo voorts, met 'Z' vertegenwoordigde 35.)

       Zodra  endptr niet NULL is, zal strtol het adres van het eerste ongeldige teken in *endptr
       opslaan. Als er geen enkel cijfer was dan bewaart strtol() de originele waarde van nptr in
       *endptr  (en  geeft een 0 terug). In het bijzonder, als *nptr niet gelijk is aan '\0' maar
       **endptr is '\0' bij terugkeer, dan is de hele tekenreeks geldig.

       De strtoll()  functie werkt net als de strtol()  functie maar geeft een  lang-lang  gehele
       waarde terug.

EIND WAARDE

       De  strtol()  functie  retourneert  het resultaat van een conversie, behalve als de waarde
       resulteerde in een onder- of overloop. Als een onderloop optrad dan  retourneert  strtol()
       een  LONG_MIN.  Als  een  overloop  optrad dan retourneert strtol() een LONG_MAX. In beide
       gevallen wordt errno gezet op ERANGE. Hetzelfde geldt voor  strtoll()  (met  LLONG_MIN  en
       LLONG_MAX in plaats van LONG_MIN en LONG_MAX).

FOUTEN

       EINVAL (niet in C99)  Het gegeven grondtal bevat een niet ondersteunde waarde.

       ERANGE De resulterende waarde was buiten bereik.

       De implementatie mag errno zetten op EINVAL in het geval dat er geen omzetting plaats vond
       (geen cijfers gezien en 0 geretourneerd).

ATTRIBUTEN

       Voor een uitleg van de termen in deze sectie, zie attributes(7).

       ┌────────────────────────────────────────────────┬───────────────────┬────────────────────┐
       │InterfaceAttribuutWaarde             │
       ├────────────────────────────────────────────────┼───────────────────┼────────────────────┤
       │strtol(), strtoll(), strtoq()                   │ Thread veiligheid │ MT-Safe taalgebied │
       └────────────────────────────────────────────────┴───────────────────┴────────────────────┘

VOLDOET AAN

       strtol(): POSIX.1-2001, POSIX.1-2008, C89, C99 SVr4, 4.3BSD.

       strtoll(): POSIX.1-2001, POSIX.1-2008, C99.

OPMERKINGEN

       Omdat strtol() legitiem 0,  LONG_MAX, of LONG_MIN (LLONG_MAX of LLONG_MIN voor  strtoll())
       kan  retourneren  bij  zowel  succes  of  falen, moet het aanroepende programma errno op 0
       zetten voor de aanroep, en vervolgens bepalen of een fout optrad door  te  controleren  of
       errno een niet-nul waarde heeft na de aanroep.

       Volgens  POSIX.1,  in  taalgebieden anders dan "C" en "POSIX", mogen deze functies andere,
       implementatie afhankelijke numerieke tekenreeksen accepteren.

       BSD heeft ook

           quad_t strtoq(const char *nptr, char **endptr, int grondtal);

       met complete vergelijkbare definitie. Afhankelijk  van  de  woordgrootte  van  de  huidige
       architectuur, kan dit equivalent zijn aan strtoll() of aan strtol().

VOORBEELDEN

       Het  hieronder  getoonde  programma  demonstreert  het  gebruik  van  strtol(). Het eerste
       argument op de commando regel bepaalt de tekenreeks waarvan strtol() het getal moet lezen.
       Het  tweede  (optionele)  argument  bepaalt  het grondtal dat moet worden gebruikt voor de
       conversie. (Dit argument wordt geconverteerd naar een numerieke vorm door gebruik te maken
       van  atoi(3), een functie die niet op fouten controleert en een eenvoudige interface heeft
       dan strtol().) Een aantal voorbeelden van de resultaten geproduceerd  door  dit  programma
       zijn de volgende:

           $ ./a.out 123
           strtol() returned 123
           $ ./a.out '    123'
           strtol() returned 123
           $ ./a.out 123abc
           strtol() returned 123
           Further characters after number: "abc"
           $ ./a.out 123abc 55
           strtol: Invalid argument
           $ ./a.out ''
           No digits were found
           $ ./a.out 4000000000
           strtol: Numerical result out of range

   Programma bron

       #include <stdlib.h>
       #include <limits.h>
       #include <stdio.h>
       #include <errno.h>

       int
       main(int argc, char *argv[])
       {
           int base;
           char *endptr, *str;
           long val;

           if (argc < 2) {
               fprintf(stderr, "Usage: %s str [base]\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           str = argv[1];
           base = (argc > 2) ? atoi(argv[2]) : 0;

           errno = 0;    /* To distinguish success/failure after call */
           val = strtol(str, &endptr, base);

           /* Controleer op diverse mogelijke fouten */

           if (errno != 0) {
               perror("strtol");
               exit(EXIT_FAILURE);
           }

           if (endptr == str) {
               fprintf(stderr, "No digits were found\n");
               exit(EXIT_FAILURE);
           }

           /* als we hier komen, van was strtol() in het vinden van een getal */

           printf("strtol() returned %ld\n", val);

           if (*endptr != '\0')        /* Not necessarily an error... */
               printf("Further characters after number: \"%s\"\n", endptr);

           exit(EXIT_SUCCESS);
       }

ZIE OOK

       atof(3), atoi(3), atol(3), strtod(3), strtoimax(3), strtoul(3),

COLOFON

       Deze   pagina  is  onderdeel  van  release  5.13  van  het  Linux  man-pages-project.  Een
       beschrijving van het project, informatie over het melden van bugs en  de  nieuwste  versie
       van deze pagina zijn op https://www.kernel.org/doc/man-pages/ te vinden.

VERTALING

       De  Nederlandse  vertaling  van  deze  handleiding  is  geschreven  door Mario Blättermann
       <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>

       Deze vertaling is vrije documentatie;  lees  de  GNU  General  Public  License  Version  3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  of later over de Copyright-voorwaarden. Er is
       geen AANSPRAKELIJKHEID.

       Indien U fouten in de vertaling van deze handleiding zou vinden,  stuur  een  e-mail  naar
       ⟨debian-l10n-dutch@lists.debian.org⟩.