.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" and Copyright 2006 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" Modified Sun Jul 25 10:53:39 1993 by Rik Faith (faith@cs.unc.edu) .\" Added correction due to nsd@bbc.com (Nick Duffek) - aeb, 950610 .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH strtol 3 "2 mei 2024" "Linux man\-pages 6.8" .SH NAAM strtol, strtoll, strtoq \- converteert een tekenreeks naar een lang geheel getal .SH BIBLIOTHEEK Standard C bibliotheek (\fIlibc\fP, \fI\-lc\fP) .SH SAMENVATTING .nf \fB#include \fP .P \fBlong strtol(const char *restrict \fP\fInptr\fP\fB,\fP \fB char **restrict \fP\fIendptr\fP\fB, int \fP\fIbase\fP\fB);\fP \fBlong long strtoll(const char *restrict \fP\fInptr\fP\fB,\fP \fB char **restrict \fP\fIendptr\fP\fB, int \fP\fIbase\fP\fB);\fP .fi .P .RS -4 Feature Test Macro´s eisen in glibc (zie \fBfeature_test_macros\fP(7)): .RE .P \fBstrtoll\fP(): .nf _ISOC99_SOURCE || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE .fi .SH BESCHRIJVING De \fBstrtol\fP() functie converteert het initiële deel van een tekenreeks in \fInptr\fP naar een lang geheel getal met als \fIgrondtal\fP als grondtal, welk moet liggen tussen 2 en 36 (inclusief deze grenzen), of de speciale waarde 0. .P De tekenreeks mag beginnen met een willekeurig aantal witruimtes (zoals bepaald door \fBisspace\fP(3)) gevolgd door een enkel optioneel teken \[aq]+\[aq] or \[aq]\-\[aq]. Als het \fIgrondtal\fP 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 \fIgrondtal\fP 0 geïnterpreteerd worden als 10 (decimaal) behalve als het volgende teken \[aq]0\[aq] is, in welk geval het geïnterpreteerd wordt als 8 (octaal). .P De rest van de tekenreeks zal geconverteerd worden naar een \fIlong\fP 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 \[aq]A\[aq] in zowel hoofd\- als kleine letter 10, \[aq]B\[aq] vertegenwoordigd 11, en zo voorts, met \[aq]Z\[aq] vertegenwoordigde 35.) .P Zodra \fIendptr\fP niet NULL is, zal \fBstrtol\fP het adres van het eerste ongeldige teken in \fI*endptr\fP opslaan. Als er geen enkel cijfer was, dan bewaart \fBstrtol\fP() de originele waarde van \fInptr\fP in \fI*endptr\fP (en geeft een 0 terug). In het bijzonder, als \fI*nptr\fP niet gelijk is aan \[aq]\e0\[aq] maar \fI**endptr\fP is \[aq]\e0\[aq] bij terugkeer, dan is de hele tekenreeks geldig. .P De \fBstrtoll\fP() functie werkt net als de \fBstrtol\fP() functie maar geeft een lang\-lang gehele waarde terug. .SH "EIND WAARDE" De \fBstrtol\fP() functie retourneert het resultaat van een conversie, behalve als de waarde resulteerde in een onder\- of overloop. Als een onderloop optrad dan retourneert \fBstrtol\fP() een \fBLONG_MIN\fP. Als een overloop optrad dan retourneert \fBstrtol\fP() een \fBLONG_MAX\fP. In beide gevallen wordt \fIerrno\fP gezet op \fBERANGE\fP. Hetzelfde geldt voor \fBstrtoll\fP() (met \fBLLONG_MIN\fP en \fBLLONG_MAX\fP in plaats van \fBLONG_MIN\fP en \fBLONG_MAX\fP). .SH FOUTEN Deze functie verandert \fIerrno\fP niet bij succes. .TP \fBEINVAL\fP (niet in C99) Het gegeven \fIgrondtal\fP bevat een niet ondersteunde waarde. .TP \fBERANGE\fP De resulterende waarde was buiten bereik. .P De implementatie mag \fIerrno\fP zetten op \fBEINVAL\fP in het geval dat er geen omzetting plaats vond (geen cijfers gezien en 0 geretourneerd). .SH ATTRIBUTEN Voor een uitleg van de termen in deze sectie, zie \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interface Attribuut Waarde T{ .na .nh \fBstrtol\fP(), \fBstrtoll\fP(), \fBstrtoq\fP() T} Thread veiligheid MT\-Safe taalgebied .TE .SH "VOLDOET AAN" C11, POSIX.1\-2008. .SH GESCHIEDENIS .TP \fBstrtol\fP() POSIX.1\-2001, C89, SVr4, 4.3BSD. .TP \fBstrtoll\fP() POSIX.1\-2001, C99. .SH OPMERKINGEN Omdat \fBstrtol\fP() legitiem 0, \fBLONG_MAX\fP, of \fBLONG_MIN\fP (\fBLLONG_MAX\fP of \fBLLONG_MIN\fP voor \fBstrtoll\fP()) kan retourneren bij zowel succes of falen, moet het aanroepende programma \fIerrno\fP op 0 zetten voor de aanroep, en vervolgens bepalen of een fout optrad door te controleren of \fIerrno == ERANGE\fP heeft na de aanroep. .P Volgens POSIX.1, in taalgebieden anders dan "C" en "POSIX", mogen deze functies andere, implementatie afhankelijke numerieke tekenreeksen accepteren. .P BSD heeft ook .P .in +4n .EX \fBquad_t strtoq(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB, int \fP\fIgrondtal\fP\fB);\fP .EE .in .P met complete vergelijkbare definitie. Afhankelijk van de woordgrootte van de huidige architectuur, kan dit equivalent zijn aan \fBstrtoll\fP() of aan \fBstrtol\fP(). .SH OPMERKINGEN Indien \fIbase\fP 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. .P .in +4n .EX errno = 0; strtol("0", NULL, base); if (errno == EINVAL) goto unsupported_base; .EE .in .SH VOORBEELDEN Het hieronder getoonde programma demonstreert het gebruik van \fBstrtol\fP(). Het eerste argument op de commando regel bepaalt de tekenreeks waarvan \fBstrtol\fP() 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 \fBatoi\fP(3), een functie die niet op fouten controleert en een eenvoudige interface heeft dan \fBstrtol\fP().) Een aantal voorbeelden van de resultaten geproduceerd door dit programma zijn de volgende: .P .in +4n .EX $\fB ./a.out 123\fP strtol() returned 123 $\fB ./a.out \[aq] 123\[aq]\fP strtol() returned 123 $\fB ./a.out 123abc\fP strtol() returned 123 Further characters after number: "abc" $\fB ./a.out 123abc 55\fP strtol: Invalid argument $\fB ./a.out \[aq]\[aq]\fP No digits were found $\fB ./a.out 4000000000\fP strtol: Numerical result out of range .EE .in .SS "Programma bron" .\" SRC BEGIN (strtol.c) \& .EX #include #include #include \& int main(int argc, char *argv[]) { int base; char *endptr, *str; long val; \& if (argc < 2) { fprintf(stderr, "Usage: %s str [base]\en", 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\en"); exit(EXIT_FAILURE); } \& /* Als we hier kwamen, dan vond strtol() een getal . */ \& printf("strtol() returned %ld\en", val); \& if (*endptr != \[aq]\e0\[aq]) /* Niet noodzakelijk een fout... */ printf("Meer tekens na het getal: \e"%s\e"\en", endptr); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "ZIE OOK" \fBatof\fP(3), \fBatoi\fP(3), \fBatol\fP(3), \fBstrtod\fP(3), \fBstrtoimax\fP(3), \fBstrtoul\fP(3) .PP .SH VERTALING De Nederlandse vertaling van deze handleiding is geschreven door Mario Blättermann en Luc Castermans . .PP Deze vertaling is vrije documentatie; lees de .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID. .PP Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar .MT debian-l10n-dutch@lists.debian.org .ME .