Newsgroup: it.comp.os.linux.development
Titolo: comportamento strano di strcmp?

$ cat prova.c
#include <string.h>
int main(void){
	strcmp(NULL, "satanas");
	return 0;
}
$ gcc prova.c
$ ./a.out
Segmentation fault
Secondo voi e' normale che strcmp vada in segfault se uno dei due
argomenti e' NULL? A me non pare bello...
$ dpkg -s libc6 | grep Version
Version: 2.1.3-10
-- 
addio, e grazie per tutto il pesce

 argomenti e' NULL?
Si`, e non e` certo l'unica...
Ciao
 David
-- 
<d.santinoli presso mi. flashnet. it>

argomenti e' NULL? A me non pare bello...
Perche' non e' bello? 
Cosi' non gli passi un puntatore ad una stringa nulla, gli passi proprio
null come puntatore, e come e' ovvio, qualsiasi operazione
sull'indirizzo di memoria puntato da null, e' leggermente fuori dal
normale.
-- 
           |Save our planet!
  Ciao     |Save wildlife;
  roberto  |For your E-MAIL use only recycled Bytes !!
           |roberto poggi  
rpo...@softhome.net

 argomenti e' NULL? A me non pare bello...
Eh, penso proprio di si. Ti pare bello che se scrivi
a[-5747363636363645]='a'
il programma se ne vada in core dump? :-)
A me sembra peggio quando non lo fa!
-- 
Francesco P. Lovergine

argomenti e' NULL? A me non pare bello...
Secondo me non e' bello che ci siano programmatori che la usano cosi'
;)

 addio, e grazie per tutto il pesce
Credo che dipenda da leader:
int strcmp(const char *s1, const char *s2);
il fatto che i parametri siano passati come costanti (in modo che il
compilatore possa dare tutto se stesso nell'ottimizzazione del codice)
non permette che tu gli passi un puntatore NULL perchè semplicemente non
punta.
CREDO!!!!!!
-- 
		Michele Dionisio
    email:    
m.dio...@mail.planetsec.com
		ICQ:	62217050

argomenti e' NULL? A me non pare bello...
A me non pare bello usare puntatori non validi 
 Function: int strcmp (const char *S1, const char *S2)
     The `strcmp' function compares the string S1 against S2, returning
     a value that has the same sign as the difference between the first
     differing pair of characters (interpreted as `unsigned char'
     objects, then promoted to `int').
Marco
-- 
 
m.at...@flashnet.it
La prima delle Frequently Asked Questions: 
dove sono le FAQ ?      it.faq

>argomenti e' NULL? A me non pare bello...
r> Perche' non e' bello? 
perche' sarebbe piu' bello se si accorgesse che gli e' arrivato un
puntatore null e evitasse di far crashare tutto il programma :)


>argomenti e' NULL? A me non pare bello...
AL> Secondo me non e' bello che ci siano programmatori che la usano cosi'
su questo non ci piove, infatti l'ho trovata modificando del
codice che non ho scritto io (credo sia la cosa peggiore che si possa
augurare ad un programmatore) :)


 puntatore null e evitasse di far crashare tutto il programma :)
Se il puntatore non punta a niente è molto probabile che il programma
sia buggato e farloc ontinuare oltre combinerebbe soo guai. Oltretutto
sarebbe più lento. Se ti serve questa funzionalità semplicemente fai un
wrapper:
int my_strcmp(const char *s1, const char *s2) {
	if (!(s1 && s2)) 
		return (s2 == NULL) - (s1 == NULL);
	return strcmp(s1, s2);
}
Ciao,
Fabio Alemagna



Pape' Satan, pape' Satan aleppe, comincio' Dr. con voce chioccia:
DF> su questo non ci piove, infatti l'ho trovata modificando del
DF> codice che non ho scritto io (credo sia la cosa peggiore che si possa
DF> augurare ad un programmatore) :)
...in ogni caso, a pensarci bene, ho scritto 'na strunzata.
Quel maledetto programma mi sta facendo fondere il cervello :)
