Se connecter / S'enregistrer
Votre question

[C] déclarer tableau du meme genre que char *argv[]

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
22 Avril 2011 12:06:30

Bonjour

je dois dans un programme envoyer à une de mes fonctions un tableau du même genre que le très connus char *argv[] de main.
Cependant, je n'arrive pas a refaire ce tableau qui pourtant ne devait à priori pas poser de problème puisqu'au final il n'y aura que 2 entrées dedans.

J'ai donc pour le moment ceci :
  1. char argNull[2][10] = {"", ""};
  2.  
  3. // du code ....
  4.  
  5. argNull[0] = _cmd;
  6. argNull[1] = NULL;
  7.  
  8. // le reste ....


Vous aurez compris, ce tableau doit contenir un tableau de char à son indice 0 et NULL à 1. Ce tableau sera ensuite passé à un execvp (ce qui explique le NULL etc...)

Ma question est donc : comment je pourrai créer un tableau du même genre que char *argv[] du main ?

Merci d'avance ! :) 

Autres pages sur : declarer tableau genre char argv

22 Avril 2011 12:16:39

si tu déclare un tableau a 2 dimensions comme tu l'as fais cela ne marche pas ?

  1. char argNull[Nb_ligne][Nb_colonne]


m
0
l
22 Avril 2011 12:18:06

On ne déclare jamais jamais jamais de tableau avec une variable. C'est interdit en C ;) 
Pour se faire, on utilise des malloc qui sont là pour ça. Mais je connais la taille donc je veux la définir en dur.
m
0
l
a b L Programmation
22 Avril 2011 19:44:16

Attention, un tableau à 2 dimensions et un tableau de pointeurs, ce n'est pas la même chose.
Il suffit de faire un dessin de la structure:
- pour char*[], tu as un tableau à 1 dimension donc le contenu d'une case est une adresse mémoire pointant sur une autre zone mémoire contenant le tableau de char
- pour un char[][], tu as un tableau a 2 dimensions de char. En mémoire tout se suit, donc chaque lignes du tableau sont mises les unes après les autres.

Donc, bien que d'un point de vue adressage, un char*[] soit équivalent à un char[][], les structures qui se trouvent derrière les adresses sont différentes.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS