Wo ist der Denkfehler ?

Post Reply
Message
Author
ne

Wo ist der Denkfehler ?

#1 Post by ne »

Hi Leute .. ich habe mal versucht mit getenv zu spielen, aber es funktioniert nicht, denn auch wenn der HOSTANME linux3 ist, so bekomme ich die Meldung "Hostname ist falsch"

wo ist der Denkfehler ?

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#include <stdio.h>
#include <stdlib.h>

main()
{
char *host_name, *getenv();
host_name=getenv("HOSTNAME");
if(host_name == "linux3") {
printf("Hostname ist OK\<!--no-->n%s\<!--no-->n",host_name);
} else {
printf("Hostname ist falsch");
}
}
</font><hr></pre></blockquote>

ich möchte bitte keine andere Version, wie ich den Hostname des Rechners sonst noch rausbekommen könnte (möchte es mit getenv erreichen.

Danke

Jochen

Re: Wo ist der Denkfehler ?

#2 Post by Jochen »

Öh - Zeichenketten in C werden mittels strcmp oder strncmp verglichen! Wenn Du 'hostname == "linux3"' programmierst, vergleichst Du den Pointer, der auf die Zeichenkette im Environment zeigt, mit dem Pointer, der auf die konstante Zeichenkette "linux3" zeigt, die irgendwo im Speicher liegt. Daher wird der Vergleich immer falsch ergeben müssen.

Jochen

ne

Re: Wo ist der Denkfehler ?

#3 Post by ne »

was muß ich dazu ändern oder wie sähe das funktionell richtig aus ?


danke

Matthias Brachmann

Re: Wo ist der Denkfehler ?

#4 Post by Matthias Brachmann »

mit
if(strcmp(host_name, "linux3")==0){
printf("Hostname OK
");
} else .....

müsste es funzen

Gruß Matthias

Post Reply