Se connecter avec
S'enregistrer | Connectez-vous

argument de la fonction main

Dernière réponse : dans Programmation

:jap:  Bonjour,
quelqu'un peut m'expliquer ce bout du code:
  1. void main(int argc, char* argv[]) //=======ici????????????????
  2. {
  3.  
  4.  
  5. if (argc < 5){ //=========et là??????????
  6. printf("Usage: %s <dim> filename idxname 0/1 (create/search)\n",argv[0]);//getch();
  7. exit(0);
  8. }
  9.  
  10. strcpy(filename, argv[2]);
  11. strcpy(idxname, argv[3]);
  12. int option=atoi(argv[4]); // 0 for construct, 1 for load and query
  13.  
  14. ndim = atoi(argv[1]);
  15. }

je vi=uet savoir l'utilisation des paramétres de la fonction main argc et argv..?
merci

Autres pages sur : argument fonction main

Lassé par la pub ? Créez un compte

Citation :
Batchy a écrit :
dans son code on déclare un int en plein millieu du code, ça ne ressemble pas trop à du C ...


Bonjour, d'abord a ma seul connaissance, y'a que le C++ qui accepte de declarer une variable en plein milieu d'un programme pas le C.
Le C ne l'autorise que en debut de bloc:

  1. /*debut programme*/
  2. { int temp;
  3. /*suite bloc*/
  4. }
  5. /*fin programme*/

est le mieux que tu puisse faire en C mais ta variable est locale au bloc, sortie du bloc elle n'existe plus.

pour les arguments de la fonction main:
l'entier sert a compter le nombre d'argument de ton programme, c'est a dire que si tu lance dans un shell:
# mon_programme arg1 arg2
ben ton entier prendra la valeur 3 (+ 1 pour le nom du prog).
Le pointeur de tableau de caractere (tu peut aussi mettre un char**) permet de stocker les chaine de caractere des arguments.
Ici argv[0] = mon_programme, argv[1] == arg1, argv[2] = arg2.

Voili voilou, c'est pas plus dure.
Expert Programmation

Citation :
[d'abord a ma seul connaissance, y'a que le C++ qui accepte de declarer une variable en plein milieu d'un programme pas le C.
Le C ne l'autorise que en debut de bloc.

A ta seul connaissance, alors. :D 

Si, c'est autorisé, même en C. Alors après pour savoir quelle norme ou standard précisément, demander à Emmanuel ;) 

Faire un test avec VC++ ou GCC qui sont polyglotes n'est pas pertinent.
Par contre mon bon vieux CC sous AIX, accepte par défaut, mais n'accepte plus si je l'invoke en C89.

En 2006, il n'est donc pas interdit d'utiliser la norme de 1999.

Citation :
pourquoi, pas recommandé ?
je fait pas mal de delphi ces temps ci et c'est une des choses qui me plait le moins (a part borland) dans ce language, c'est la prédéclaration des variables :/ 

J'aime bien que les variables soient définies en début de bloc (j'ai pas dit 'de fonction') afin que la portée soit limitée au minimum.

http://mapage.noos.fr/emdel/notes.htm#portee

Mais je n'aime pas la définition au milieu d'un bloc (C99 ou à-la-C++), car je n'arrive pas à en cerner la portée clairement.
Expert Programmation

Vous opposez le classique au moderne. (sans connotation de mieux ou de pire dans un sens ou dans l'autre). Donc, il n'y a pas de meilleure façon de faire.

En revanche, en C, il est tellement facile de coder SALE, qu'il vaut mieux se prévoir des garde-fou.

Alors darouine, quand tu liras un code avec une déclaration en plein milieu, tu ne t'en choqueras point, et quand tu auras à rédiger un bout de code, tu déclareras tes variables au début des blocs.

J'ai bon ?

hé ben .. pauvre petit darouine ... c'est du remballage express ... lol

Ben main(), c'est simplement une fonction comme une autre qui peut avoir des arguments. (dites moi si je me trompe ;)  .. car le c,c++,java ca remonte pour moi et j'ai peur de confondre certaines notions )
Lassé par la pub ? Créez un compte