Le 27 novembre 2009, Hamiral a écrit :Donc les paramètres passés à ton programme sont stockà ©s dans argv[1],
argv[2]...argv[argc]
... argv[argc-1], non ?
Le 27 novembre 2009, Hamiral a écrit :
Donc les paramètres passés à ton programme sont stockà ©s dans argv[1],
argv[2]...argv[argc]
... argv[argc-1], non ?
Le 27 novembre 2009, Hamiral a écrit :Donc les paramètres passés à ton programme sont stockà ©s dans argv[1],
argv[2]...argv[argc]
... argv[argc-1], non ?
Pourquoi « embrouillons » ?
Surtout que tu as coupé l'autre phrase
d'Emmanuel, qui expliquait ce qui est propre au langage C, c'est-à-dire
le concept de tableau argv[*] prédécoupé.
Qui plus est, Emmanuel n'est pas rentré dans les détails des différents
systèmes de passage de paramètres ;
car la ligne de commande n'est qu'un
système comme un autre, avec Unix tu peux utiliser execxx() à la place,
avec les environnements graphiques ce sera une icone etc.; on s'en
moque, c'est le boulot du compilateur de faire la transition pour
présenter des arguments découpés.
Ce qui compte c'est de savoir qu'elle sont de classe
'static',
Les paramètres de la ligne de commande sont de classe static ?????
Tu n'as pas lu le texte que tu as coupé ?
Les paramètres de la ligne de commande sont un concept extérieur.
On parle donc uniquement des arguments passés par l'environnement
d'exécution C à la fonction main()).
Les arguments (les valeurs) passés au programme dans le tableau argv,
ainsi que leur nombre argc (les noms des paramètres sont des
conventions), sont effectivement des variables de durée de stockage
statique, c'est-à-dire ni automatique ni dynamique.
Pourquoi « embrouillons » ?
Surtout que tu as coupé l'autre phrase
d'Emmanuel, qui expliquait ce qui est propre au langage C, c'est-à-dire
le concept de tableau argv[*] prédécoupé.
Qui plus est, Emmanuel n'est pas rentré dans les détails des différents
systèmes de passage de paramètres ;
car la ligne de commande n'est qu'un
système comme un autre, avec Unix tu peux utiliser execxx() à la place,
avec les environnements graphiques ce sera une icone etc.; on s'en
moque, c'est le boulot du compilateur de faire la transition pour
présenter des arguments découpés.
Ce qui compte c'est de savoir qu'elle sont de classe
'static',
Les paramètres de la ligne de commande sont de classe static ?????
Tu n'as pas lu le texte que tu as coupé ?
Les paramètres de la ligne de commande sont un concept extérieur.
On parle donc uniquement des arguments passés par l'environnement
d'exécution C à la fonction main()).
Les arguments (les valeurs) passés au programme dans le tableau argv,
ainsi que leur nombre argc (les noms des paramètres sont des
conventions), sont effectivement des variables de durée de stockage
statique, c'est-à-dire ni automatique ni dynamique.
Pourquoi « embrouillons » ?
Surtout que tu as coupé l'autre phrase
d'Emmanuel, qui expliquait ce qui est propre au langage C, c'est-à-dire
le concept de tableau argv[*] prédécoupé.
Qui plus est, Emmanuel n'est pas rentré dans les détails des différents
systèmes de passage de paramètres ;
car la ligne de commande n'est qu'un
système comme un autre, avec Unix tu peux utiliser execxx() à la place,
avec les environnements graphiques ce sera une icone etc.; on s'en
moque, c'est le boulot du compilateur de faire la transition pour
présenter des arguments découpés.
Ce qui compte c'est de savoir qu'elle sont de classe
'static',
Les paramètres de la ligne de commande sont de classe static ?????
Tu n'as pas lu le texte que tu as coupé ?
Les paramètres de la ligne de commande sont un concept extérieur.
On parle donc uniquement des arguments passés par l'environnement
d'exécution C à la fonction main()).
Les arguments (les valeurs) passés au programme dans le tableau argv,
ainsi que leur nombre argc (les noms des paramètres sont des
conventions), sont effectivement des variables de durée de stockage
statique, c'est-à-dire ni automatique ni dynamique.
2°) Que ce soit vrai ou pas, c'était une réponse inadapté au nive au
avéré du PO.
2°) Que ce soit vrai ou pas, c'était une réponse inadapté au nive au
avéré du PO.
2°) Que ce soit vrai ou pas, c'était une réponse inadapté au nive au
avéré du PO.
On 27 nov, 21:41, candide wrote:2°) Que ce soit vrai ou pas, c'était une réponse inadapté au niveau
avéré du PO.
Alors on attend toujours ta réponse adaptée... Car tu critiques
beaucoup mais tu ne proposes toujours rien ...
On 27 nov, 21:41, candide <cand...@free.invalid> wrote:
2°) Que ce soit vrai ou pas, c'était une réponse inadapté au niveau
avéré du PO.
Alors on attend toujours ta réponse adaptée... Car tu critiques
beaucoup mais tu ne proposes toujours rien ...
On 27 nov, 21:41, candide wrote:2°) Que ce soit vrai ou pas, c'était une réponse inadapté au niveau
avéré du PO.
Alors on attend toujours ta réponse adaptée... Car tu critiques
beaucoup mais tu ne proposes toujours rien ...
Bonjour,
En apparence, ce code ne produit pas de résultat ni de message
d'erreur :
#include <stdio.h>
void print_vertical(char *str) ;
int main(int argc, char *argv[])
{
if (argc > 1)
print_vertical(argv[1]) ;
return 0 ;
}
void print_vertical(char *str)
{
while (*str)
printf("%cn", *str++) ;
}
...
Quand je passe un paramètre, je modifie la valeur retournée par une
fonction. Maintenant, je ne sais pas ce que c'est que passer un
paramètre en ligne de commande. Je devrais avoir 10/20 si c'était un
exercice?
Bonjour,
En apparence, ce code ne produit pas de résultat ni de message
d'erreur :
#include <stdio.h>
void print_vertical(char *str) ;
int main(int argc, char *argv[])
{
if (argc > 1)
print_vertical(argv[1]) ;
return 0 ;
}
void print_vertical(char *str)
{
while (*str)
printf("%cn", *str++) ;
}
...
Quand je passe un paramètre, je modifie la valeur retournée par une
fonction. Maintenant, je ne sais pas ce que c'est que passer un
paramètre en ligne de commande. Je devrais avoir 10/20 si c'était un
exercice?
Bonjour,
En apparence, ce code ne produit pas de résultat ni de message
d'erreur :
#include <stdio.h>
void print_vertical(char *str) ;
int main(int argc, char *argv[])
{
if (argc > 1)
print_vertical(argv[1]) ;
return 0 ;
}
void print_vertical(char *str)
{
while (*str)
printf("%cn", *str++) ;
}
...
Quand je passe un paramètre, je modifie la valeur retournée par une
fonction. Maintenant, je ne sais pas ce que c'est que passer un
paramètre en ligne de commande. Je devrais avoir 10/20 si c'était un
exercice?
-ed- a écrit :On 27 nov, 21:41, candide wrote:2°) Que ce soit vrai ou pas, c'était une réponse inadapté au niveau
avéré du PO.
Alors on attend toujours ta réponse adaptée... Car tu critiques
beaucoup mais tu ne proposes toujours rien ...
Tel que nous connaissons bpascal123 depuis plusieurs mois, le silence
était une réponse plus adaptée que ton verbiage technique (et qui en
outre est probablement faux : j'attends tes citations de la Norme ou
celles d'Antoine) et de toutes façons complètement incompréhensible de
la part du PO.
bpascal123 a besoin d'un recadrage complet, un tel recadrage ne tient
pas dans une réponse technique hermétique (ou pas) et un forum tel que
celui-ci n'y est pas adapté.
-ed- a écrit :
On 27 nov, 21:41, candide <cand...@free.invalid> wrote:
2°) Que ce soit vrai ou pas, c'était une réponse inadapté au niveau
avéré du PO.
Alors on attend toujours ta réponse adaptée... Car tu critiques
beaucoup mais tu ne proposes toujours rien ...
Tel que nous connaissons bpascal123 depuis plusieurs mois, le silence
était une réponse plus adaptée que ton verbiage technique (et qui en
outre est probablement faux : j'attends tes citations de la Norme ou
celles d'Antoine) et de toutes façons complètement incompréhensible de
la part du PO.
bpascal123 a besoin d'un recadrage complet, un tel recadrage ne tient
pas dans une réponse technique hermétique (ou pas) et un forum tel que
celui-ci n'y est pas adapté.
-ed- a écrit :On 27 nov, 21:41, candide wrote:2°) Que ce soit vrai ou pas, c'était une réponse inadapté au niveau
avéré du PO.
Alors on attend toujours ta réponse adaptée... Car tu critiques
beaucoup mais tu ne proposes toujours rien ...
Tel que nous connaissons bpascal123 depuis plusieurs mois, le silence
était une réponse plus adaptée que ton verbiage technique (et qui en
outre est probablement faux : j'attends tes citations de la Norme ou
celles d'Antoine) et de toutes façons complètement incompréhensible de
la part du PO.
bpascal123 a besoin d'un recadrage complet, un tel recadrage ne tient
pas dans une réponse technique hermétique (ou pas) et un forum tel que
celui-ci n'y est pas adapté.
Antoine Leca a écrit :Pourquoi « embrouillons » ?
Parce qu'il embrouille le PO.
"expliquait" est un bien grand mot pour un commentaire aussi court,
vague et abstrait que celui qu'il donne et qui de toute façon n'arrive
pas à prendre en compte la problématique gloabale du PO. Problème
d'empathie récurrent chez -ed- ...
Qui plus est, Emmanuel n'est pas rentré dans les détails des différents
systèmes de passage de paramètres ;
Faut même pas parler de tout ça à un débutant comme le PO.
Mais on s'en fout de ça.
Antoine Leca a écrit :
Pourquoi « embrouillons » ?
Parce qu'il embrouille le PO.
"expliquait" est un bien grand mot pour un commentaire aussi court,
vague et abstrait que celui qu'il donne et qui de toute façon n'arrive
pas à prendre en compte la problématique gloabale du PO. Problème
d'empathie récurrent chez -ed- ...
Qui plus est, Emmanuel n'est pas rentré dans les détails des différents
systèmes de passage de paramètres ;
Faut même pas parler de tout ça à un débutant comme le PO.
Mais on s'en fout de ça.
Antoine Leca a écrit :Pourquoi « embrouillons » ?
Parce qu'il embrouille le PO.
"expliquait" est un bien grand mot pour un commentaire aussi court,
vague et abstrait que celui qu'il donne et qui de toute façon n'arrive
pas à prendre en compte la problématique gloabale du PO. Problème
d'empathie récurrent chez -ed- ...
Qui plus est, Emmanuel n'est pas rentré dans les détails des différents
systèmes de passage de paramètres ;
Faut même pas parler de tout ça à un débutant comme le PO.
Mais on s'en fout de ça.
Antoine Leca a écrit :Ce qui compte c'est de savoir qu'elle sont de classe
'static',
Les paramètres de la ligne de commande sont de classe static ?????
Les paramètres de la ligne de commande sont un concept extérieur.
Oui et non. La Norme elle-même parle de la ligne de commande (même si
elle n'utilise par ce terme) donc ce n'est pas un concept totalement
"extérieur".
On parle donc uniquement des arguments passés par l'environnement
d'exécution C à la fonction main()).
Mais on s'en fout de ça.
Essaye de regarder comment le PO voit les choses.
Les arguments (les valeurs) passés au programme dans le tableau argv,
ainsi que leur nombre argc (les noms des paramètres sont des
conventions), sont effectivement des variables de durée de stockage
statique, c'est-à-dire ni automatique ni dynamique.
1°) Chapitres et versets ?
Antoine Leca a écrit :
Ce qui compte c'est de savoir qu'elle sont de classe
'static',
Les paramètres de la ligne de commande sont de classe static ?????
Les paramètres de la ligne de commande sont un concept extérieur.
Oui et non. La Norme elle-même parle de la ligne de commande (même si
elle n'utilise par ce terme) donc ce n'est pas un concept totalement
"extérieur".
On parle donc uniquement des arguments passés par l'environnement
d'exécution C à la fonction main()).
Mais on s'en fout de ça.
Essaye de regarder comment le PO voit les choses.
Les arguments (les valeurs) passés au programme dans le tableau argv,
ainsi que leur nombre argc (les noms des paramètres sont des
conventions), sont effectivement des variables de durée de stockage
statique, c'est-à-dire ni automatique ni dynamique.
1°) Chapitres et versets ?
Antoine Leca a écrit :Ce qui compte c'est de savoir qu'elle sont de classe
'static',
Les paramètres de la ligne de commande sont de classe static ?????
Les paramètres de la ligne de commande sont un concept extérieur.
Oui et non. La Norme elle-même parle de la ligne de commande (même si
elle n'utilise par ce terme) donc ce n'est pas un concept totalement
"extérieur".
On parle donc uniquement des arguments passés par l'environnement
d'exécution C à la fonction main()).
Mais on s'en fout de ça.
Essaye de regarder comment le PO voit les choses.
Les arguments (les valeurs) passés au programme dans le tableau argv,
ainsi que leur nombre argc (les noms des paramètres sont des
conventions), sont effectivement des variables de durée de stockage
statique, c'est-à-dire ni automatique ni dynamique.
1°) Chapitres et versets ?
La norme parle (5.1.2.2.1) de chaînes fournies à partir de
l'environnement par l'implémentation. Pas vu de concept de ligne
Mmmm... désolé, mais je ne suis pas totalement d'accord.
Tu écris que pour toi, les « paramètres de la ligne de commande » sont
tout sauf de « classe statique » ; je suis de l'avis d'Emmanuel sur ce
point (au vocabulaire près), donc je me permets d'expliquer pourquoi je
pense qu'il a raison d'écrire cela.
1°) Chapitres et versets ?
Je suis extrêmement désolé pour m'être trompé d'un dans ma citation
<news:heok7j$fj7$, au dernier paragraphe.
La référence corecte est le chapitre 5, paragraphe 5.1.2.2.1, 2e alinéa.
— The parameters /argc/ and /argv/ and the strings pointed to
by the /argv/ array shall be modifiable by the program,
and retain their last-stored values between program
startup and program termination.
Pour les durées de stockage: 6.1.2.4/6.2.4 Storage durations of objects,
en particulier le 2e/3e alinéa.
Tu remarqueras que les _arguments_ passés au programme ne sont ni nommés
ni même (explicitement) déclarés,
d'où le raisonnement de mon message
précvédetn, que je ne vais pas répéter ;
il ne faut évidemment pas les
confondre avec les _paramètres_ (nommés conventionnellement argc et
argv) de la fonction main, qui peuvent être très différents, par exemple
en cas d'appel récursif à la fonction main.
La norme parle (5.1.2.2.1) de chaînes fournies à partir de
l'environnement par l'implémentation. Pas vu de concept de ligne
Mmmm... désolé, mais je ne suis pas totalement d'accord.
Tu écris que pour toi, les « paramètres de la ligne de commande » sont
tout sauf de « classe statique » ; je suis de l'avis d'Emmanuel sur ce
point (au vocabulaire près), donc je me permets d'expliquer pourquoi je
pense qu'il a raison d'écrire cela.
1°) Chapitres et versets ?
Je suis extrêmement désolé pour m'être trompé d'un dans ma citation
<news:heok7j$fj7$1@shakotay.alphanet.ch>, au dernier paragraphe.
La référence corecte est le chapitre 5, paragraphe 5.1.2.2.1, 2e alinéa.
— The parameters /argc/ and /argv/ and the strings pointed to
by the /argv/ array shall be modifiable by the program,
and retain their last-stored values between program
startup and program termination.
Pour les durées de stockage: 6.1.2.4/6.2.4 Storage durations of objects,
en particulier le 2e/3e alinéa.
Tu remarqueras que les _arguments_ passés au programme ne sont ni nommés
ni même (explicitement) déclarés,
d'où le raisonnement de mon message
précvédetn, que je ne vais pas répéter ;
il ne faut évidemment pas les
confondre avec les _paramètres_ (nommés conventionnellement argc et
argv) de la fonction main, qui peuvent être très différents, par exemple
en cas d'appel récursif à la fonction main.
La norme parle (5.1.2.2.1) de chaînes fournies à partir de
l'environnement par l'implémentation. Pas vu de concept de ligne
Mmmm... désolé, mais je ne suis pas totalement d'accord.
Tu écris que pour toi, les « paramètres de la ligne de commande » sont
tout sauf de « classe statique » ; je suis de l'avis d'Emmanuel sur ce
point (au vocabulaire près), donc je me permets d'expliquer pourquoi je
pense qu'il a raison d'écrire cela.
1°) Chapitres et versets ?
Je suis extrêmement désolé pour m'être trompé d'un dans ma citation
<news:heok7j$fj7$, au dernier paragraphe.
La référence corecte est le chapitre 5, paragraphe 5.1.2.2.1, 2e alinéa.
— The parameters /argc/ and /argv/ and the strings pointed to
by the /argv/ array shall be modifiable by the program,
and retain their last-stored values between program
startup and program termination.
Pour les durées de stockage: 6.1.2.4/6.2.4 Storage durations of objects,
en particulier le 2e/3e alinéa.
Tu remarqueras que les _arguments_ passés au programme ne sont ni nommés
ni même (explicitement) déclarés,
d'où le raisonnement de mon message
précvédetn, que je ne vais pas répéter ;
il ne faut évidemment pas les
confondre avec les _paramètres_ (nommés conventionnellement argc et
argv) de la fonction main, qui peuvent être très différents, par exemple
en cas d'appel récursif à la fonction main.
Maintenant discutons du sexe des anges. Sur le fond, Emmanuel et toi
avez probablement raison. D'une certaine façon, les arguments de la
ligne de commande sont de "classe" (ce n'est pas le terme de la Norme)
"static". Ils partagent avec ce type d'objet le fait que leur durée de
vie est celle du programme et qu'ils sont alloués avant le début de son
exécution. Néanmoins, la Norme ne le dit pas formellement. Cela tient Ã
mon avis au statut particulier de ces objets : ils ne sont pas alloués
par le programme mais par l'environnement. En fait il y a 4 objets :
-- argc (fourni par l'environnement)
-- la copie de argc passé en argument à main() (les arguments sont
passés par valeur),
-- argv
-- les chaînes pointées dans le "tableau" argv .
J'aurais tendance à dire que argc et argv sont de classe automatique et
seules les chaînes pointées sont de classe statique. Mais la Norme ne
dit rien. Pourtant, dans un autre cas similaire où le programme alloue
un objet sans le déclarer, celui des chaînes littérales, la Norme prend
bien soin de préciser que les chaînes sont de classe statique.
Maintenant discutons du sexe des anges. Sur le fond, Emmanuel et toi
avez probablement raison. D'une certaine façon, les arguments de la
ligne de commande sont de "classe" (ce n'est pas le terme de la Norme)
"static". Ils partagent avec ce type d'objet le fait que leur durée de
vie est celle du programme et qu'ils sont alloués avant le début de son
exécution. Néanmoins, la Norme ne le dit pas formellement. Cela tient Ã
mon avis au statut particulier de ces objets : ils ne sont pas alloués
par le programme mais par l'environnement. En fait il y a 4 objets :
-- argc (fourni par l'environnement)
-- la copie de argc passé en argument à main() (les arguments sont
passés par valeur),
-- argv
-- les chaînes pointées dans le "tableau" argv .
J'aurais tendance à dire que argc et argv sont de classe automatique et
seules les chaînes pointées sont de classe statique. Mais la Norme ne
dit rien. Pourtant, dans un autre cas similaire où le programme alloue
un objet sans le déclarer, celui des chaînes littérales, la Norme prend
bien soin de préciser que les chaînes sont de classe statique.
Maintenant discutons du sexe des anges. Sur le fond, Emmanuel et toi
avez probablement raison. D'une certaine façon, les arguments de la
ligne de commande sont de "classe" (ce n'est pas le terme de la Norme)
"static". Ils partagent avec ce type d'objet le fait que leur durée de
vie est celle du programme et qu'ils sont alloués avant le début de son
exécution. Néanmoins, la Norme ne le dit pas formellement. Cela tient Ã
mon avis au statut particulier de ces objets : ils ne sont pas alloués
par le programme mais par l'environnement. En fait il y a 4 objets :
-- argc (fourni par l'environnement)
-- la copie de argc passé en argument à main() (les arguments sont
passés par valeur),
-- argv
-- les chaînes pointées dans le "tableau" argv .
J'aurais tendance à dire que argc et argv sont de classe automatique et
seules les chaînes pointées sont de classe statique. Mais la Norme ne
dit rien. Pourtant, dans un autre cas similaire où le programme alloue
un objet sans le déclarer, celui des chaînes littérales, la Norme prend
bien soin de préciser que les chaînes sont de classe statique.