IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Comment remplir un tableau en paramètre de fonction ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 112
    Par défaut Comment remplir un tableau en paramètre de fonction ?
    Bonjour !



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void litTableau(const unsigned int taille, const int * tab)
    {
         unsigned int i;
         for (i = 0 ; i < taille ; i++) printf(" %0X", tab[i]);
         printf("\n");
    }
     
     
    int main(int argc, char *argv[])
    {
        litTableau(3, {0x54, 0x41, 0x42});
     
        system("PAUSE");	
        return 0;
    }

    Quelle est la bonne syntaxe pour remplir le tableau depuis le paramètre de la fonction ?

  2. #2
    Membre émérite
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Par défaut
    Je ne sais pas trop ce que tu as voulu faire ici, mais il faut tout d'abord déclarer ton tableau et ensuite le passer à ta fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	int tab[] = {0x54, 0x41, 0x42};
    	litTableau(3, tab);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 112
    Par défaut
    En fait, c'est dans le but de vérifier si telle suite d'octets se trouve dans un fichier.

    Ayant déjà un tableau pour fread(), j'aimerais éviter de tout faire en double.



    Je pense que c'est possible puisque ça marche avec les lettres d'une chaîne de caractères qu'on peut remplir dynamiquement et directement dans le paramètre de la fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void litTableau(const unsigned int taille, const char * tab)
    {
         unsigned int i;
         for (i = 0 ; i < taille ; i++) printf(" %0X", tab[i]);
         printf("\n");
    }
     
     
    int main(int argc, char *argv[])
    {
        litTableau(3, "TAB");
     
        system("PAUSE");	
        return 0;
    }

    Mais j'aimerais ne pas être limité à l'ANSI...

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Bonjour,

    Citation Envoyé par Nikolas Voir le message
    Je pense que c'est possible puisque ça marche avec les lettres d'une chaîne de caractères qu'on peut remplir dynamiquement et directement dans le paramètre de la fonction.
    Dans les deux cas, tu passes un pointeur vers le tableau préalablement rempli. La notation ensembliste avec les accolades ne fonctionne qu'à l'initialisation d'un tableau.

    Bonne chance,

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 112
    Par défaut
    Il y aurait bien la méthode des options avec les énumération des 256 combinaisons d'un octet mais ça n'est pas dans l'ordre.

    Il y a aussi la méthode de mettre chaque valeur en argument supplémentaire avec « stdarg.h » mais ça revient à un code lourd pour pas grand-chose.


    Ou alors ne pas faire de fonction et faire une comparaison primitive octet par octet ; un code bien dégueulasse...

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Ce qui t'est suggéré, c'est de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int main(int argc, char *argv[])
    {
     int tab[] =   {0x54, 0x41, 0x42};  
     litTableau(3, tab);
     
        system("PAUSE");	
        return 0;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment remplir un tableau
    Par Aurore_atmo dans le forum MATLAB
    Réponses: 39
    Dernier message: 06/07/2006, 11h16
  2. [C#] Comment remplir un tableau avec un arraylist
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/06/2006, 15h14
  3. comment remplir un tableau deja créé
    Par Hamza dans le forum Delphi
    Réponses: 6
    Dernier message: 05/06/2006, 23h01
  4. comment remplir un tableau deja créé
    Par Hamza dans le forum Bases de données
    Réponses: 0
    Dernier message: 04/06/2006, 19h38
  5. Réponses: 1
    Dernier message: 18/11/2005, 11h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo