Provided by: manpages-nl-dev_4.27.0-1_all bug

NAAM

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

BIBLIOTHEEK

       Standard C bibliotheek  (libc, -lc)

SAMENVATTING

       #include <stdlib.h>

       long strtol(const char *restrict nptr,
                   char **_Nullable restrict endptr, int base);
       long long strtoll(const char *restrict nptr,
                   char **_Nullable 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

       Deze functie verandert errno niet bij succes.

       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 │
       └──────────────────────────────────────────────────────────────┴───────────────────┴────────────────────┘

VERSIES

       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().

VOLDOET AAN

       C11, POSIX.1-2008.

GESCHIEDENIS

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

       strtoll()
              POSIX.1-2001, 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 == ERANGE heeft na de aanroep.

       Indien base getest moet worden, dan moet dit getest worden in een aanroep waarbij de tekenreeks succesvol
       zal zijn. Anders is het onmogelijk om in overdraagbare zin de fouten te onderscheiden.

           errno = 0;
           strtol("0", NULL, base);
           if (errno == EINVAL)
               goto unsupported_base;

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 <errno.h>
       #include <stdio.h>
       #include <stdlib.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 */
           strtol("0", NULL, base);
           if (errno == EINVAL) {
               perror("strtol");
               exit(EXIT_FAILURE);
           }

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

           /* Check for various possible errors. */

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

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

           /* Als we hier kwamen, dan vond strtol() een getal . */

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

           if (*endptr != '\0')        /* Niet noodzakelijk een fout... */
               printf("Meer tekens na het getal: \"%s\"\n", endptr);

           exit(EXIT_SUCCESS);
       }

ZIE OOK

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

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.

Linux man-pagina's 6.9.1                          16 juni 2024                                         strtol(3)