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
Wo ist der Denkfehler ?
Re: Wo ist der Denkfehler ?
Ö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
Jochen
Re: Wo ist der Denkfehler ?
was muß ich dazu ändern oder wie sähe das funktionell richtig aus ?
danke
danke
Re: Wo ist der Denkfehler ?
mit
if(strcmp(host_name, "linux3")==0){
printf("Hostname OK
");
} else .....
müsste es funzen
Gruß Matthias
if(strcmp(host_name, "linux3")==0){
printf("Hostname OK
");
} else .....
müsste es funzen
Gruß Matthias