🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.lang.c
Article #15252

Re: rot13 [Was : Re: conjugaison et autres ...]

#15252
From: Richard Delorme
Date: Mon, 03 Oct 2005 08:46
64 lines
3676 bytes
Charlie Gordon a �crit :
> "Richard Delorme" <abulmo@nospam.fr> wrote in message
>>    static int init = 0;
>>    static char crypt[UCHAR_MAX];
>>    if (!init) {
> 
> pas besoin d'une variable init s�par�e, on peut tester crypt[1] qui vaut 0 avant
> initialisation et 1 ou une lettre de l'alphabet (donc pas 0) apr�s.

Une variable init s�par�e est beaucoup plus lisible, � mon avis, pour un 
co�t n�gligeable.


>>       char alphabet[26] = "abcdefghijklmnopqrstuvwxyz";
>>       char rot13_alphabet[26] = "nopqrstuvwxyzabcdefghijklm";
> 
> �viter les initialisations de tableaux automatiques: utiliser des const char *
> ou des tableaux static.

Certes, mais les performances de cette partie du code ne sont pas bien 
importante, puisque ce qui est dans le bloc if n'est ex�cut� qu'une fois.


>>          crypt[(int) alphabet[i]] = rot13_alphabet[i];
> 
> le cast en (int) de alphabet[i] est inutile, il ne fait rien du tout, de plus
> alphabet[i] est forc�ment positif, donc inutile de caster en (unsigned char).

Le cast en (int) sert juste � faire taire gcc qui gueule d�s qu'il voit 
un char en indice de tableau :

rot13.c:20: warning: array subscript has type `char'

Comme le cast ne fait rien du tout, il ne co�te rien.

Je sais aussi que les caract�res a-z sont n�cessairement positifs, et 
c'est d'ailleurs pourquoi il n'y a pas de cast en (unsigned char).


> On peut aussi se passer de rot13_alphabet en �crivant:
> 
> crypt[alphabet[i]] = alphabet[(i + 13) % 26];

Oui, mais comme il y a d�j� de multiples exemples, j'ai voulu montrer 
une alternative. �crire l'alphabet prend deux secondes avec le 
copier/coller.

> 
> Mais c'est l�g�rement plus co�teux sur les rares machines o� la division est
> lente.

Le co�t n'est pas important, puisque cette partie du code est ex�cut� 
une seule fois.

>>       *s = crypt[(int)((unsigned char) *s)];
> 
> *s = crypt[(unsigned char)(*s)];
> 
> c'est plus simple (on peut meme supprimer les ())

J'ai mis le (int) pour sym�trie avec le cast du dessus.

-- 
Richard
Technical Details
Message-ID: <4340efc7$0$309$7a628cd7@news.club-internet.fr>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!grolier!v.t-online.fr!t-online.fr!not-for-mail
References: <1126342327.583568.21420@g43g2000cwa.googlegroups.com> <4329e5d4$0$7846$8fcfb975@news.wanadoo.fr> <dge4b6$fqa$1@reader1.imaginet.fr> <432ab809$0$1734$8fcfb975@news.wanadoo.fr> <mn.84b07d59016a857b.31483@laposte.net> <433f16ac$0$27406$8fcfb975@news.wanadoo.fr> <mn.10907d5a55119e84.15512@YOURBRAnoos.fr> <433f9cb1$0$7821$8fcfb975@news.wanadoo.fr> <mn.128c7d5aa5238de0.15512@YOURBRAnoos.fr> <43403203$0$5388$8fcfb975@news.wanadoo.fr> <43403d27$0$306$7a628cd7@news.club-internet.fr> <dhq3bs$dbc$1@reader1.imaginet.fr>

Show Full Headers
Complete Article Headers
X-Google-Thread: f9822,b21b26167a936e28
X-Google-Attributes: gidf9822,public
X-Google-Language: FRENCH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!t-online.de!grolier!v.t-online.fr!t-online.fr!not-for-mail
Date: Mon, 03 Oct 2005 10:46:01 +0200
From: Richard Delorme <abulmo@nospam.fr>
User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050801)
X-Accept-Language: fr, en
MIME-Version: 1.0
Newsgroups: fr.comp.lang.c
Subject: Re: rot13 [Was : Re: conjugaison et autres ...]
References: <1126342327.583568.21420@g43g2000cwa.googlegroups.com> <4329e5d4$0$7846$8fcfb975@news.wanadoo.fr> <dge4b6$fqa$1@reader1.imaginet.fr> <432ab809$0$1734$8fcfb975@news.wanadoo.fr> <mn.84b07d59016a857b.31483@laposte.net> <433f16ac$0$27406$8fcfb975@news.wanadoo.fr> <mn.10907d5a55119e84.15512@YOURBRAnoos.fr> <433f9cb1$0$7821$8fcfb975@news.wanadoo.fr> <mn.128c7d5aa5238de0.15512@YOURBRAnoos.fr> <43403203$0$5388$8fcfb975@news.wanadoo.fr> <43403d27$0$306$7a628cd7@news.club-internet.fr> <dhq3bs$dbc$1@reader1.imaginet.fr>
In-Reply-To: <dhq3bs$dbc$1@reader1.imaginet.fr>
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 64
Message-ID: <4340efc7$0$309$7a628cd7@news.club-internet.fr>
Organization: Club-Internet / T-Online France
NNTP-Posting-Date: 03 Oct 2005 08:46:00 GMT
NNTP-Posting-Host: 62.34.128.94
X-Trace: 1128329160 news.club-internet.fr 309 62.34.128.94
X-Complaints-To: abuse@club-internet.fr