Provided by: manpages-nl-dev_4.13-4_all bug

NAAM

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

SAMENVATTING

       #include <stdlib.h>

       long strtol(const char *nptr, char **endptr, int grondtal);

       long long strtoll(const char *nptr, char **endptr, int grondtal);

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

       strtoll():
           _ISOC99_SOURCE
               || /* Glibc versies <= 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);

           /* Check for various possible errors */

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

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

           /* If we got here, strtol() successfully parsed a number */

           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.10 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 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.

GNU                                              1 november 2020                                       STRTOL(3)