🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #288

Uwaga: blad w funkcji isdigit .

#288
From: Karol Wojtiuk
Date: Thu, 13 Nov 1997 19:46
29 lines
1781 bytes
Witam wszystkich
funkcja isdigit jest zadeklarowana następująco:
int isdigit(int c);
i ma ona za zadanie sprawdzać czy dane c jest znakiem z przedzialu '0' -
'9'.
Nie wiem jak wyglądają implementacje w innych bibliotekach ale w
dostarczanej
przez Microsoft isdigit operuje na tablicy _ctype[257]. Jak widać z rozmiaru
tablicy
można sprawdzić tylko 257 wartości i jeżeli zmienna c przyjmie wartość
ujemną (co
może być bardzo częste gdy używamy jako parametru wartości typu char ze
znakiem)
lub przyjmie wartość powyżej 256 to program nam się wywala.
Rozumiem, że ze względu na dużą szybkość przyjęto taki sposób implementacji
ale
po pierwsze należało sporządzić inną deklarację funkcji (parametr typu int
mówi wyraźnie,
że możemy używać wartości parametru w o wiele większym zakresie niż tylko od
0 do 256) i
po drugie można było zaznaczyć w opisie funkcji, że akceptuje ona tylko
wartości od 0 do 256.
Co o tym sądzicie?
A może ja jestem w błędzie?
Czy zauważyliście inne kwiatki?
Pozdrowienia
Karol Wojtiuk
PS. Powyższe prawdopodobnie tyczy się wszystkich funkcji is..., ale jeszcze
tego nie sprawdzałem.
Technical Details
Message-ID: <64flfj$jds$1@sunsite.icm.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.icm.edu.pl!not-for-mail
From: "Karol Wojtiuk" <karol@tebo.chelm.pl>
Newsgroups: pl.comp.lang.c
Subject: Uwaga: blad w funkcji isdigit .
Date: Thu, 13 Nov 1997 20:46:40 +0100
Organization: ICM
Lines: 31
Message-ID: <64flfj$jds$1@sunsite.icm.edu.pl>
NNTP-Posting-Host: guru.tebo.chelm.pl
X-Newsreader: Microsoft Outlook Express 4.71.1712.3
X-MimeOLE: Produced By Microsoft MimeOLE V4.71.1712.3
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit