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 :

incrémenter un tableau de char


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut incrémenter un tableau de char
    Hello,

    Voilà mon problème :

    J'ai un programme qui me renvoit dans une boucle si une ip répond à un ping ou pas. Dans le but de réutiliser ces ip une fois ma boucle terminée, j'aimerais donc, à chaque fois que l'ip répond au ping, stocker celle-ci dans un tableau.

    J'ai beau retourner le problème dans tous les sens, je ne vois pas :
    1) comment déclarer mon tableau (allocation dynamique façon C89, ou C99 en mettant une variable qui elle même s'incrémente à mesure que des ips répondent)
    2) comment incrémenter ce tableau.

    en gros mon code se résume à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /* [...] un boucle qui teste les ip une par une */
    if(pingok == 1)
    {
    printf("ip x.x.x.x répond");
    /* ici j'aimerais incrémenter un tableau dans lequel je stockerais mes ip, tableau que je pourrais traiter dans mon mail */
    }

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    typedef struct pAddr {
       char ip[16] ;
       int   IsOn ;
    } Addr ;
     
     
    int Fonction( ...)
    {
    ...
    Addr *tab=NULL ;
    ...
    if ( (tab = malloc(nb_lignes_ip*sizeof(Addr))) == NULL )
       return 1 ;
     
    for ( i = 0 ; i < nb_lignes_ip ; i++ )
    {
       strcpy ( Addr[i].ip, lignes_ip[i] );
       Addr[[i].IsOn = 0 ;
       ....
       if ( pingok == 1 )
         Addr[i].IsOn = 1 ;
       ... 
    }
    ....
    }

  3. #3
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    Merci pour ce bout de code, mais malheureusement, pas encore le niveau pour le comprendre (frustrant).

    J'ai bien pigé avec les structures etc.. mais le reste me cause pas.

    On a besoin de tout ça pour.. simplement incrémenter (rajouter, donc) des éléments (de type "char") dans un tableau ??

    Quand bien même je n'utilise pas l'allocation dynamique (au max je sais que j'aurai 100 chars, donc au pire je prends 100 x 4 en mémoire en déclarant mon tableau).

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Ah je comprend ce que tu veux faire..

    Désolé on n'aidera pas pour tentative de spamming...


  5. #5
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Ah je comprend ce que tu veux faire..

    Désolé on n'aidera pas pour tentative de spamming...

    Beau troll, vraiment. clap clap clap.

    Et en dehors de ça, quelquechose d'intéressant à apporter au sujet ?

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    si c'est pas pour ca, que veux-tu faire par :

    pour.. simplement incrémenter (rajouter, donc) des éléments (de type "char") dans un tableau ??

  7. #7
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    Eh bien je veux stocker des "char" dans un tableau.

    Mon code me génère une variable de type char dans une boucle, et à la fin de la boucle, j'aimerais stocker ce char dans un tableau dans le main(), qui contiendrait toutes mes char, pour ensuite les traiter une par une dans une autre boucle.

    Mettons par exemple que je veuille stocker une liste de noms dans un tableau, et ensuite afficher tous les noms. Là où je m'emmele les pinceaux, c'est sur :
    - comment déclarer ce tableau. Je vois bien dans le main un truc genre list[nombrereponse], pour déclarer mon tableau, mais il faudrait à la fois incrémenter ma variable nombrereponse dans ma boucle, et dans cette même boucle incrémenter mon tableau.
    - comment justement incrémenter mon tableau.

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ce qui se conçoit bien s'énonce clairement...

    et là bof.. on comprend pas vraiment...

    Donc réfléchis à ton problème et expose-le .. Mais là visiblement tu as de la difficulté à l'exprimer...

  9. #9
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    Excuse moi, mais je ne vois pas où est la difficulté de comprendre "Je voudrais que m'on me montre comment incrémenter un tableau avec des variable de type char".

    Ou alors un truc m'échappe. Comme j'ai vraiment besoin de comprendre ce truc, je vais encore une fois réexpliquer mon problème. Problème auquel d'ailleurs tu as partiellement répondu avec ton code, mais ton exemple m'apparait nébuleux dans la mesure où tu fais appele à des notions que je n'ai pas encore étudié.

    On va prendre un exemple tout bête : Je veux générer une liste de mot aléatoire, les stoker (un par un, depuis la boucle qui les génère) dans un tableau. Ensuite, dans une autre fonction, je veux par exemple les afficher un par un (depuis ce tableau).

    Je veux donc savoir comment déclarer ce tableau, et comment, depuis la boucle qui génère mes noms, "renseigner" (incrémenter à ma connaissance) ce tableau.

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    Citation Envoyé par nuitn0ire Voir le message
    Excuse moi, mais je ne vois pas où est la difficulté de comprendre "Je voudrais que m'on me montre comment incrémenter un tableau avec des variable de type char".
    Le problème, c'est qu'il n'existe pas de définition du verbe "incrémenter" pour un tableau.
    On incrémente des valeurs individuelles, mais un tableau ne s'incrémente pas.

    Donc: Que veux-tu dire exactement par "incrémenter" ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    bon.

    Commençons par voire si je me plante pas dans la notion que j'ai de tableau : Pour moi, un tableau sert à stocker plusieurs variables. Par exemple pour un tableau noms[], je peux stocker "albert", "jean", "kevin" etc..

    Bien. Dans mon main(), admettons que j'ai un tableau qui s'appele justement noms : donc noms[]. Or, un tableau s'initalise toujours en précisant la taille qu'il prendra en mémoire, nous sommes d'accords ? Donc si j'ai un tableau qui contiendra 5 gugus, j'initialiserai mon tableau de la façon suivante : . Bon, là mes 5 gugus s'appelent 0, mais on s'en fout.

    (Bon, en exposant clairement mon problème, je viens à l'instant de trouver un moyen de contourner mon problème d'allocation dynamique de mon tableau, mais j'aurais quand même bien aimer comprendre le principe, mais passons).

    Bien, mon tableau est déclaré, je sais que j'attends 5 noms (ou prénoms, comme vous voulez).
    Admettons maintenant, que dans mon main, je fasse appele à une fonction que me génère 5 noms tant que i <= 5, et me fasse un printf de mes 5 noms. C'est très bien, mes noms sont générés, ils s'affichent, mais moi, j'aimerais les conserver ! Aussi, j'aimerais donc me servir de mon tableau pour ça. Ce que je veux savoir, c'est comment intégrer dans mon tableau ces noms qui sont générés.
    Incrémenter veut pour moi dire "rajouter +1" à chaque éxecution. Autrement dit, incrémenter un tableau, reviens pour moi à dire qu'à chaque éxecution de ma boucle, je rajoute + une valeur dans mon tableau (ici la valeur est un nom).

    Voilou.. J'espère être assez clair cette fois-ci.

  12. #12
    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
    Bon, si je comprend, tu veux faire un tableau de noms. Mais chaque nom est lui même un tableau de char.
    Donc le tableau de noms est :
    - un tableau de tableau de char
    - ou un tableau contenant l'adresse des tableaux de char qui contiennent les noms.

    La deuxième forme est plus souple et adaptée si on ne connaît pas à priori la longueur des noms ou le nombre de noms :

    - Créer un tableau de pointeurs sur char.
    - Pour chaque nouveau nom
    - Allouer dynamiquement un tableau de char de longueur suffisante pour stocker le nom + le zero terminal
    - Copier le nom dans ce tableau
    - Ajouter l'adresse de ce tableau dans le tableau de pointeurs
    - si le tableau de pointeurs est plein :
    - il a été alloué dynamiquement et il suffit de le redimensionner en plus grand et de continuer
    - sinon, c'est foutu, on ne peut plus ajouter de noms

    - Prévoir les échecs d'allocation dynamique et la récupération de la mémoire allouée dynamiquement lorsqu'on n'en a plus besoin.

Discussions similaires

  1. decalage à gauche sur une tres grand tableau de char
    Par petitours dans le forum C++Builder
    Réponses: 10
    Dernier message: 14/07/2005, 22h40
  2. retrouver unesuite de caractères dans un tableau de char
    Par petitours dans le forum C++Builder
    Réponses: 17
    Dernier message: 12/07/2005, 23h43
  3. Ansistring et tableau de char
    Par rabbi_jaccob dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/12/2004, 11h51
  4. Adresse d'un tableau de char
    Par Trap D dans le forum C
    Réponses: 8
    Dernier message: 23/12/2003, 12h02
  5. Réponses: 4
    Dernier message: 10/10/2003, 18h04

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