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 :

fonction pour remplir un tableau de char *


Sujet :

C

  1. #1
    Membre régulier Avatar de saidus
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47

    Informations forums :
    Inscription : Octobre 2004
    Messages : 165
    Points : 89
    Points
    89
    Par défaut fonction pour remplir un tableau de char *
    Bonjour a tous
    voila j'ai un probleme qui persiste :
    je veux ecrire une fonction qui prend 3 paramaitre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void PartFile(double size , int parts, char **ranges  )
      // size = taille de fichier 
      // parts = nombre de partie
      // ranges = tableau qui va contenir les partie 
    {
     /// 
    }
    la question est comment chager la valeur du tableau (char **ranges)
    qui doit etre a la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ranges={"xxx-bbb","ccc-ddd",...}
    en pascal c'est faisable mais en C j'ai des deficultes ..
    autrement dir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       // je declare le tableau
    char ** p ; // pointe sur rien 
      // j'appel la  fonction 
    PartFile(6542454 , 8, p )
     // a la fin je dois avoir un tableau plein ..
    // p={"xxx-bbb","ccc-ddd",...}
    et maintenant le Code 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    ///////////////////////////////////////
    //  je devise le sze sur parts 
    // et je remplis les ranges . 
    // ranges sont de sorte : {"fsdf-fsdfs","fs-fsd",...}
    //
    /////////////////////////////////////
    void PartFile(double sze , int parts, char **ranges  )
    {    
    // char srange[parts][100]        ;
        long int qot , rem          ;
     
        ldiv_t t = ldiv(sze , parts) ;
        qot = t.quot ;
        rem = t.rem  ;
     
        int i = 0 ;
        for ( i=0 ; i<parts ; i++)
        {
              int         r = 0 ;
              static int d = 0 ;
              char cnb[50] , rg[100] ;
     
              r = d - qot  ;     // t=0
              if (i==0) {r += qot ;} else {r += (qot+1) ;}
     
              ltoa(r,cnb,10);
              strcpy(rg,cnb);
     
              strcat(rg,"-");
     
              r += qot ;   // t= bachsz
              ltoa(r,cnb,10);
              strcat(rg,cnb) ;
              d = r ;
              sprintf(ranges[i],"%s",rg); /// Problem
              printf("%s\n", ranges[i]) ;/// Probleme
        }
    }
    voila tout
    j'espere que vous m'aidiez ou me donner une astuce
    Merci

  2. #2
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       // je declare le tableau
    char ** p ; // pointe sur rien
    Non, tu ne déclares pas un tableau mais un pointeur !

    Tu devrais avoir une déclaration du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char p[N][M];
    PartFile(6542454 , 8, p )
    avec pour N le nombre maximum de chaines et pour M la longueur maximale des chaines +1

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Points : 502
    Points
    502
    Par défaut
    Citation Envoyé par diogene Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       // je declare le tableau
    char ** p ; // pointe sur rien
    Non, tu ne déclares pas un tableau mais un pointeur !

    Tu devrais avoir une déclaration du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char p[N][M];
    PartFile(6542454 , 8, p )
    avec pour N le nombre maximum de chaines et pour M la longueur maximale des chaines +1
    De plus change le prototype de ta fonction en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void PartFile(double sze , int parts, char ranges[][M]  )

  4. #4
    Membre régulier Avatar de saidus
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47

    Informations forums :
    Inscription : Octobre 2004
    Messages : 165
    Points : 89
    Points
    89
    Par défaut
    Merci messieurs
    c'est Bon !!

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

Discussions similaires

  1. [Tableaux] Fonction pour remplir un tableau
    Par renaud26 dans le forum Langage
    Réponses: 10
    Dernier message: 27/01/2008, 10h19
  2. StringTokenizer pour remplir un tableau
    Par keumlebarbare dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 20/12/2006, 12h54
  3. Conseil pour remplir un tableau excel depuis USF
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/10/2006, 11h15
  4. Réponses: 9
    Dernier message: 17/02/2006, 11h04

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