OVH Cloud OVH Cloud

trois petites questions

23 réponses
Avatar
pere.noel
La première question :

dans main(...) faut-il terminer pae return ou exit, je présume exit
EXIT_SUCCES|EXIT_FAILURE ???

La seconde question :

si un fichier est vide (ce qui peut-être "normal" (ie non pathologique)
le "file = fopen(file_name, "r");" retourne NULL ???

j'ai eu ce cas...

y a tt'il un moyen de vérifer la différence entre :

fichier non présent et fichier présent MAIS vide ???

dans le cas ou "file = fopen(file_name, "r");" retourne NULL, le
"fclose(file);" restet'il utile ou non ? (je pense que non...

La troisième question :

elle concerne les vars d'environnement.

avec getenv("HOME"); je peux attraper le HOME du USER, SHELL et TERM
aussi mais y a t'il un moyen de lister les vars d'env vues par C ???

par exemple existe-t'il un var donnant le séparateur "/" dans les pathes
de fichiers ???

c tout pour aujourd'hui )))

au fait, le K&R et nettement + lisible que le delannoy (bien nommé
àlanoix) ;-)

--
une bévue

3 réponses

1 2 3
Avatar
Eric Levenez
Le 11/09/06 20:54, dans <4505b0e6$0$27393$, « gl »
a écrit :

int main(int argc, char *argv[], char *envp[])

C'est défini au paragraphe J.5.1 de la norme. Mais pour que cette fonction
soit portable il faut effectivement que le système le supporte :-)


Dans le paragraphe "Common extensions". Ce n'est pas une forme
normalisée et imposée par la norme mais une extension courante (comme
indiqué dans mon message précédent).


Oui je sais. La norme dit "... extensions... are not portable to all
implementations". Cela suppose donc que c'est portable sur certaines
architectures, et là on trouve tout ce qui est posix de prêt ou de loin.

Une implémentation est libre ne pas la proposer voire de proposer une
extension syntaxiquement semblable avec un sens totalement différent (ce
qui serait particulièrement malvenu).


Oui, très malvenu. Connais-tu une seule telle implémentation ? Je ne parle
pas du cas ou envp n'est pas présent, j'en connais, mais d'implémentations
ou le envp n'a pas la syntaxe posix ?

Ce n'est pas 100% portable même si il est vrai qu'il y a de fortes
chances de rencontrer cette extension, qui reste malgré tout la
meilleure des solutions (dans les cas où getenv() ne convient pas bien
entendu).


Voilà.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
gl

Ce n'est pas 100% portable même si il est vrai qu'il y a de fortes
chances de rencontrer cette extension, qui reste malgré tout la
meilleure des solutions (dans les cas où getenv() ne convient pas bien
entendu).


Et si cette extension est présente sur les différentes plate-formes
cibles bien évidemment.

Avatar
gl
Une implémentation est libre ne pas la proposer voire de proposer une
extension syntaxiquement semblable avec un sens totalement différent (ce
qui serait particulièrement malvenu).


Oui, très malvenu. Connais-tu une seule telle implémentation ? Je ne parle
pas du cas ou envp n'est pas présent, j'en connais, mais d'implémentations
ou le envp n'a pas la syntaxe posix ?

Je dirais plutôt une "implémentation où main() accepte un troisième

paramètre char** qui n'est pas la liste des variables d'environnement".
Non je n'en connais pas (et je pense qu'il est peu probable d'en
rencontrer), mais rien ne l'empêche.

Ce n'est pas 100% portable même si il est vrai qu'il y a de fortes
chances de rencontrer cette extension, qui reste malgré tout la
meilleure des solutions (dans les cas où getenv() ne convient pas bien
entendu).


Voilà.



Je n'avais pas voulu dire autre chose dans ma première intervention. Je
m'excuses si ce n'était pas clair.


1 2 3