PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [c]char **environ



cyneox
13-08-2003, 21:19
ich hab da folgenden code:




#include <stdio.h>
#include <stdlib.h>
#include <string.h>

extern char **environ;
int envi_index=0;
/* mein_getenv() sucht nach einer enviroment-variable ;
der name dieser varible wird in g_name gespeichert
*/
char *mein_getenv(void)
{
char g_name[256];
int d,c;
envi_index=0;
printf("Name: ");
scanf("%s",g_name);
while(environ[envi_index]!=NULL)
{
b=0;
while(environ[envi_index][d]!='=')
{
c=0;
while(g_name[c]==environ[envi_index][c]) c++;
if(g_name[c]=='\0') return(environ[envi_index]);

++d;
}
++envi_index;
}
printf("not found\n");
}
/*
mein_setenv() versucht der enviroment-variable,die in g_name
"abgelagert" ist ,einen wert zu geben...
*/
char *mein_setenv(char *name)
{
char *l_wert="vic"; //neuer wert
int a,b=0;
for(a=0;name[a]!='=';++a); //definittion einer envi.-variable:name=wert -->mit dieser schleife
//wird der wert der variable herausgefiltert
++a;
while(l_wert[b]){
strcpy(&environ[envi_index][a++],&l_wert[b++]); //kopiert den inhalt von l_wert
//in die variable environ[variable]
}
environ[envi_index][a++]='\0';
return(environ[envi_index]);


}

main(void)
{
char *neu_wert;
char *name=mein_getenv();
printf("%s\n",name);
neu_wert=mein_setenv(name);
printf("%s\n",neu_wert); //die ausgabe stimmt aber beim verlassen des programms ,wird die
//variable auf ihren alten inhalt gesetzt



return 0;

}



die markierten zeilen sind von wichtiger bedeutung.
warum wird die enviroment-variable mit dem neuen wert nicht gesetzt???

cyneox
13-08-2003, 22:13
sorry mein fehler.j
lösung:jeder prozess besitzt sein enviroment.das programm ändert nur sein enviroment.ich hab immer in der konsole printenv eingegeben aber was ich sah war nur die umgebung der konsole.

sorry nochmal.