🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Uwaga: blad w funkcji isdigit .

#293
From: Karol Wojtiuk
Date: Fri, 14 Nov 1997 16:12
71 lines
3566 bytes
Marek Kotowski wrote in message <346C70EB.6EE9@imm.org.pl>...
>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.
>

Zgadzam sie ze jest to nieporozumienie ale ze strony implementujacego
funkcje isdigit.
Jak widac z powyzszego podajac jako argument wartosc 258 lub -2 powinienem
otrzymac zero,
a otrzymuje wywalenie programu.

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

Napisalem tylko skrotowo, bo chodzilo mi o blad gdy setlocale jest ustawione
na wersje "amerykanska". Prawdopodobnie tak u Microsofta jak i w UNIX SVR4
(chodzi tu zapewne o opis bibliotek standardowych tego systemu - sorry ale
sie nie znam) gdy wlaczymy wersje "polska" to wtedy jest wykonywany dla
isdigit zupelnie inny kod (to samo sie tyczy i innych funkcji is...). Co za
tym idzie nie jest tez generowany blad przy przekroczeniu powyzszego zakresu
poniewaz wtedy funkcja ta nie operuje juz na statycznej tablicy.

>  Z powazaniem
>  Marek Kotowski

Takze z powazaniem
Karol Wojtiuk
Technical Details
Message-ID: <64ht9m$8u0$1@sunsite.icm.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!uw.edu.pl!news.icm.edu.pl!not-for-mail
References: <64flfj$jds$1@sunsite.icm.edu.pl> <346C146D.4F69@imm.org.pl> <64h90j$sf7$1@sunsite.icm.edu.pl> <346C70EB.6EE9@imm.org.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!uw.edu.pl!news.icm.edu.pl!not-for-mail
From: "Karol Wojtiuk" <karol@tebo.chelm.pl>
Newsgroups: pl.comp.lang.c
Subject: Re: Uwaga: blad w funkcji isdigit .
Date: Fri, 14 Nov 1997 17:12:41 +0100
Organization: ICM
Lines: 73
Message-ID: <64ht9m$8u0$1@sunsite.icm.edu.pl>
References: <64flfj$jds$1@sunsite.icm.edu.pl> <346C146D.4F69@imm.org.pl> <64h90j$sf7$1@sunsite.icm.edu.pl> <346C70EB.6EE9@imm.org.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: 7bit