2015-12-15 4 views
0

Mon école veut que je mette en œuvre le comportement setenv() standard de la fonction de bibliothèque . Je ne suis pas autorisé à utiliser setenv() pour cette implémentation. Comment puis je faire ça?Comment programmer mon propre setenv()?

+1

Qu'est-ce qui ne va pas avec setenv? –

+0

C'est dans stdlib, ça devrait marcher, non? –

+0

Je ne peux pas utiliser setenv mon école en train de l'utiliser – Myranova

Répondre

2

Sur de nombreuses implémentations du langage de programmation C et en particulier sur POSIX, l'environnement est accessible à partir de la variable globale environ. Vous devrez peut-être déclarer manuellement comme il est pas déclaré dans un fichier d'en-tête standard:

extern char **environ; 

environ des points à un tableau terminé NULL de pointeurs vers des chaînes variable=value. Par exemple, si votre environnement a les variables foo, bar et baz, les entrées environ pourrait être:

environ[0] = "foo=a"; 
environ[1] = "bar=b"; 
environ[2] = "baz=c"; 
environ[3] = NULL; 

Pour modifier l'environnement sans utiliser les fonctions setenv() ou putenv(), vérifiez si la clé que vous souhaitez définir existe déjà. Si c'est le cas, remplacer l'entrée pour cette clé. Sinon, vous devez copier le contenu de environ dans un nouveau tableau et ajouter la nouvelle entrée à sa fin. Vous pouvez utiliser malloc() ou calloc() et memcpy() à cette fin. Puisque c'est devoirs, je ne vais pas fournir plus de détails.

+0

Merci beaucoup pour cette solution – Myranova

+0

@Myranova S'il vous plaît considérer cette réponse comme acceptée si elle a résolu votre problème. – fuz

+0

ok malade essayer d'abord – Myranova