.\" -*- coding: UTF-8 -*- .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" and Copyright 2006 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" 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 "1 november 2020" GNU "Linux Programmeurs Handleiding" .SH NAAM strtol, strtoll, strtoq \- converteert een tekenreeks naar een lang geheel getal .SH SAMENVATTING .nf \fB#include \fP .PP \fBlong strtol(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB, int \fP\fIgrondtal\fP\fB);\fP .PP \fBlong long strtoll(const char *\fP\fInptr\fP\fB, char **\fP\fIendptr\fP\fB, int \fP\fIgrondtal\fP\fB);\fP .fi .PP .RS -4 Feature Test Macro´s eisen in glibc (zie \fBfeature_test_macros\fP(7)): .RE .PP .ad l \fBstrtoll\fP(): .RS 4 _ISOC99_SOURCE || /* Glibc versies <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE .RE .ad .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. .PP 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 \(aq0\(aq is, in welk geval het geïnterpreteerd wordt als 8 (octaal). .PP 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 \(aqA\(aq in zowel hoofd\- als kleine letter 10, \(aqB\(aq vertegenwoordigd 11, en zo voorts, met \(aqZ\(aq vertegenwoordigde 35.) .PP 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. .PP 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 .TP \fBEINVAL\fP (niet in C99) Het gegeven \fIgrondtal\fP bevat een niet ondersteunde waarde. .TP \fBERANGE\fP De resulterende waarde was buiten bereik. .PP 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; lbw29 lb lb l l l. Interface Attribuut Waarde T{ \fBstrtol\fP(), \fBstrtoll\fP(), \fBstrtoq\fP() T} Thread veiligheid MT\-Safe taalgebied .TE .SH "VOLDOET AAN" \fBstrtol\fP(): POSIX.1\-2001, POSIX.1\-2008, C89, C99 SVr4, 4.3BSD. .PP \fBstrtoll\fP(): POSIX.1\-2001, POSIX.1\-2008, 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\fP een niet\-nul waarde heeft na de aanroep. .PP Volgens POSIX.1, in taalgebieden anders dan "C" en "POSIX", mogen deze functies andere, implementatie afhankelijke numerieke tekenreeksen accepteren. .PP BSD heeft ook .PP .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 .PP met complete vergelijkbare definitie. Afhankelijk van de woordgrootte van de huidige architectuur, kan dit equivalent zijn aan \fBstrtoll\fP() of aan \fBstrtol\fP(). .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: .PP .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" \& .EX #include #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 */ 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\en"); exit(EXIT_FAILURE); } /* If we got here, strtol() successfully parsed a number */ printf("strtol() returned %ld\en", val); if (*endptr != \(aq\e0\(aq) /* Not necessarily an error... */ printf("Further characters after number: \e"%s\e"\en", endptr); exit(EXIT_SUCCESS); } .EE .SH "ZIE OOK" \fBatof\fP(3), \fBatoi\fP(3), \fBatol\fP(3), \fBstrtod\fP(3), \fBstrtoimax\fP(3), \fBstrtoul\fP(3), .SH COLOFON Deze pagina is onderdeel van release 5.10 van het Linux \fIman\-pages\fP\-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. .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 .