Article View: pl.comp.lang.c
Article #292Re: Uwaga: blad w funkcji isdigit .
From: Marek Kotowski
Date: Fri, 14 Nov 1997 15:40
Date: Fri, 14 Nov 1997 15:40
46 lines
2567 bytes
2567 bytes
Karol Wojtiuk wrote: > Blad w isdigit jest poniewaz w opisie tej funkcji jak i w header'ach > bibliotek nie jest zaznaczone, ze mozna operowac tylko na wartosciach od -1 > do 255, a deklaracja funkcji mowi jasno o dopuszczalnosci argumentu z > zakresu int. Calkowite nieporozumienie. Wartosci znakow nigdy nie beda zaznaczone, albowiem standard nie mowi nic o wartosciach kodow. Nawet wartosc EOF jakkolwiek tradycyjnie ujemna, formalnie moze byc takze dodatnia. Definicja isdigit mowi tylko, ze zwraca ona wartosc rozna od zera, jesli dany znak (konwertowany do int) jest '0' - '9' oraz wartosc rowna zeru w przeciwnym wypadku. To, jakie sa wartosci kodow znakow '0'-'9', to sprawa zupelnie inna i zalezna calkowicie od implementacji. Wszystko. > Na koniec warto dodac, ze to wszystko dotyczy tylko funkcji bibliotecznych > Microsoft. Niewykluczone, ze implementacja isdigit jest bledna, chociaz prawde rzeklszy musialbym sam zobaczyc, by uwierzyc. Napisalem duzo kodu z wykorzystaniem isdigit, i w BC, i w MSC, i w GNU, i nigdy z ta funkcja nie bylo problemu. > Slon przyslal mi opis tych funkcji w UNIX SVR4 gdzie jasno jest opisane, ze > operuja one > tylko i wylacznie na 7-mio bitowym kodzie ASCII, czego u Microsofta prozno > szukac. I bardzo dobrze. Funkcja isdigit jest funkcja standardowa. A w standardzie nie ma nic o kodzie ASCII, ani np. EBCDIC. Powiem nawet wiecej: zgodnie ze standardem znak moze byc kodowany takze na wiekszej liczbie bitow, 9, 12, czy 16. I jeszcze jedno: dzialanie funkcji isdigit moze byc uzaleznione od biezacej wersji jezykowej, ustawianej za pomoca standardowej funkcji setlocale. Z tego, co Pan napisal, mogloby wynikac, ze w UNIX SVR4 jest to niedopuszczalne (wersje jezykowe inne niz "amerykanski" angielski wymagaja wiecej niz 7 bitow na znak. Tym samym w UNIX SVR4 (kompilator?) takich wersji nie mozna by deklarowac. Z powazaniem Marek Kotowski
Technical Details
Message-ID:
<346C70EB.6EE9@imm.org.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.nask.pl!usenetReferences:
<64flfj$jds$1@sunsite.icm.edu.pl> <346C146D.4F69@imm.org.pl> <64h90j$sf7$1@sunsite.icm.edu.pl>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.nask.pl!usenet From: Marek Kotowski <mkot@imm.org.pl> Newsgroups: pl.comp.lang.c Subject: Re: Uwaga: blad w funkcji isdigit . Date: Fri, 14 Nov 1997 16:40:27 +0100 Organization: Instytut Maszyn Matematycznych Lines: 46 Message-ID: <346C70EB.6EE9@imm.org.pl> References: <64flfj$jds$1@sunsite.icm.edu.pl> <346C146D.4F69@imm.org.pl> <64h90j$sf7$1@sunsite.icm.edu.pl> NNTP-Posting-Host: 148.81.238.38 Mime-Version: 1.0 X-Mailer: Mozilla 3.01Gold (Win95; I) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit