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 :

Problème initialisation tableau de caractères


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 93
    Par défaut Problème initialisation tableau de caractères
    Bonjour a tous,

    Mon problème est que je veux initaliser un tableau de caractères et un warning m'est retourné :

    attention : passing argument 1 of «strcpy» makes pointer from integer without a cast

    Voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char table_des_bases_de_donnees[5][100];
    	for(i=0;i<5;i++)
    	  {
    	  for(j=0;j<100;j++)
    	    {
    	    strcpy(table_des_bases_de_donnees[i][j],"");
    	    }
    	  }
    Merci pour votre aide

  2. #2
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    bonjour,

    bizarre ce bout de code ceci devrait suffire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    char table_des_bases_de_donnees[5][100];
    	for(i=0;i<5;i++)
    	  {
    	  for(j=0;j<100;j++)
    	    {
    	    table_des_bases_de_donnees[i][j] = '\0';
    	    }
    	  }
    table_des_bases_de_donnees[i][j] est un char pas un char*

    edit :
    en meme temps c'est peut etre plutot ca que tu veux faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char table_des_bases_de_donnees[5][100];
    	for(i=0;i<5;i++)
    	  {
    	    *( table_des_bases_de_donnees[i] ) = '\0';
    	  }
    /* ca ca initialise tes 5 chaines de carateres a '\0' */

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Et si tu veux vraiment tout initialiser avec des caractères nuls:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    char table_des_bases_de_donnees[5][100];
    for(i=0 ; i<5 ; i++)
    {
    	strncpy(table_des_bases_de_donnees[i], "", 100);
    }
    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.

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 93
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Et si tu veux vraiment tout initialiser avec des caractères nuls:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    char table_des_bases_de_donnees[5][100];
    for(i=0 ; i<5 ; i++)
    {
    	strncpy(table_des_bases_de_donnees[i], "", 100);
    }
    OK ca marche en faisant : strncpy(table_des_bases_de_donnees[i], "", 100);

    Si je comprend bien, cela permet d'initialiser à VIDE les 100 premiers caractères des i lignes de mon tableau.

    C'est cela ?

    Merci en tout cas

  5. #5
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    oui mais
    edit non en fait, t aura juste le marqueur de fin de ligne au premier octet des tes chaines

    /_!_\ attention /_!_\

    "" => c'est un char*
    table_des_bases_de_donnees[i][j] => c'est un char

    si tu veut initialiser chacun des char c'est comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    char table_des_bases_de_donnees[5][100];
    	for(i=0;i<5;i++)
    	  {
    	  for(j=0;j<100;j++)
    	    {
    	    table_des_bases_de_donnees[i][j] = '\0';
    	    }
    	  }
    mais en general ca sert a rien, on met juste le marqueur de fin de chaine ('\0') au debut.

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 93
    Par défaut
    Citation Envoyé par BainE Voir le message
    oui mais
    edit non en fait, t aura juste le marqueur de fin de ligne au premier octet des tes chaines

    /_!_\ attention /_!_\

    "" => c'est un char*
    table_des_bases_de_donnees[i][j] => c'est un char

    si tu veut initialiser chacun des char c'est comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    char table_des_bases_de_donnees[5][100];
    	for(i=0;i<5;i++)
    	  {
    	  for(j=0;j<100;j++)
    	    {
    	    table_des_bases_de_donnees[i][j] = '\0';
    	    }
    	  }
    mais en general ca sert a rien, on met juste le marqueur de fin de chaine ('\0') au debut.
    OK mais je comprenais pas le \0. Pour moi cela voulait dire que l'on initialisait tout le tableau à fin de chaine.

    Ta solution marche aussi tout comme le strncpy

    En tout cas, Merci beaucoup, heureusement que ce forum existe pour les non-expérimentés en prog.

  7. #7
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Pour initialiser tout les caractères à 0, j'opterais plutot pour l'utilisation de la fonction memset():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    char table_des_bases_de_donnees[5][100];
    for(i=0 ; i<5 ; i++)
    {
         memset(table_des_bases_de_donnees[i], 0, 100);
    }

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

Discussions similaires

  1. Problème initialisation tableau 2D
    Par MasterNico dans le forum Débuter
    Réponses: 10
    Dernier message: 21/10/2013, 13h11
  2. Problème avec tableau de chaine de caractères
    Par saubin dans le forum Débuter
    Réponses: 9
    Dernier message: 31/10/2008, 20h11
  3. Problème initialisation tableau code HTML::Parser
    Par stansoad0108 dans le forum Modules
    Réponses: 4
    Dernier message: 20/03/2008, 14h08
  4. Problème de passage d'un tableau de caractère vers un DLL en C
    Par philipina dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/02/2008, 08h36
  5. problème de tableau de caractères dynamique
    Par kboo dans le forum Visual C++
    Réponses: 1
    Dernier message: 11/07/2006, 16h55

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