[C] Un petit problème à résoudre

Statut
N'est pas ouverte pour d'autres réponses.
F

Findecano

ex membre

Xaab

Elite
_Turlutte_ a dit:
Xaab a dit:
Voilà ce que je me suis amusé à faire :)
Mais est-ce autorisé ?
Exécutable (tapez 999 pour quitez): Soluce ?
Je sais: le prog a un ptit bug. Et 500 ko pour faire trois fois rien. Ben mazette !!! Le basic fait beaucoup mieux.
Euuhh tu aurais pas travaillé chez Microsoft toa ?
:idea: :p :D J'vais déposer ma candidature :wink:
 
P

piet

ex membre
Juste pour que moi le petit piet il comprenne quelque chose...

On passe les paramètres en argument... donc, la fonction main de la fonction ne se définit pas comme tout le monde le dit mais de cette façon :
Code:
void main(int argc, char * argv[])
argc est le nombre + 1 d'éléments entrés en paramètres...
dans le main, il suffit donc :
Code:
void main(int argc, char * argv[])
{
     int i;
     for(i=argc-1 ; i >0 ; i++)
     {
          printf("\t%s", argv[i];
     }
}
argv[0] est le nom du fichier... on en a pas besoin, donc, on ne prend pas 0.


Et évidemment on a besoin de rien d'autre... on ne crée aucune variable supplémentaire...
on les lit simplement dans l'autre sens!

qui réfute?
 

Xaab

Elite
char* argv[] est un pointeur désignant l'adresse mémoire d'un tableau contenant une chaine de caractères. Il me semble.
Donc si c'est ça tu n'a pas le droit. Car l'usage d'un tableau est interdit.

Enfin je suis pas super sûre :oops:
 
Xaab a dit:
char* argv[] est un pointeur désignant l'adresse mémoire d'un tableau contenant une chaine de caractères. Il me semble.
Donc si c'est ça tu n'a pas le droit. Car l'usage d'un tableau est interdit.

Enfin je suis pas super sûre :oops:
oui mais bon, la solution est valide aussi car c'est un buffer et non une allocation faite par le pgmeur...
 

Xaab

Elite
TITM4v3rick a dit:
Xaab a dit:
char* argv[] est un pointeur désignant l'adresse mémoire d'un tableau contenant une chaine de caractères. Il me semble.
Donc si c'est ça tu n'a pas le droit. Car l'usage d'un tableau est interdit.

Enfin je suis pas super sûre :oops:
oui mais bon, la solution est valide aussi car c'est un buffer et non une l0cation faite par le pgmeur...
Abon! intéréssent. J'ai encore beaucoup à apprendre :)
GG TITM4v3rick :wink:
 

zoheir

cvm.mangaleet()
arf je suis pas sûr, tu utilises qd même un pointeur vers un tab.

Faut voir ce que dis machiavel ;)
 
1er
OP
M

Machiavel666

ex membre
Allez autant pour moi, j'ai pas dû être assez clair quand j'ai posé ma question.

Bon évidemment si je le reprécise seulement maintenant je vais me faire huer...mais bon je prend le risque.

Oui c'est vrai que les argument d'un programme ne sont pas des emplacement de mémoire alloué spécifiquement par le programmeur. Mais c'est quand même un tableau ( et oui il suffit de regarder les [] ).

Et puis c'est pas très pratique de le mettre dans le main parce que c'est pas très réutilisable (mais bon là je pousse p.e. un peu).

Par contre je sais pas ce qu'en dirait les spécialistes du C mais je trouve qu'une fonction à argument variable respecterait p.e. plus les conditions, quoique.
Pour ça je demande votre avis.
 
P

piet

ex membre
mouais,.. Ben moi, je trouve qd même que ma solution est valable car le programmeur ne donne pas de tableau, c'est le programme qui prend les valeurs dans un **argv. On ne crée rien, et c'est tout à fait portable quel que soit le nombre d'entiers passés en variable!

Bon, je le refais avec une fonction à paramètres variables? lol

non, en fait, je crois que cette option est à éviter...
Pcq en la définissant, il n'y a pas de problème :
Code:
void FctAfficheInverse (int premier, ... );
telle quelle pourrait prendre autant de paramètres que l'on veut.
Mais c'est pour gérer l'envoi... donc, le problème reste le même...

Moi, j'aime mieux ma première solution!
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut