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 avec char


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Problème avec char
    à tous.
    j'ai toujours des problèmes avec les "char" . en faite je voulais faire une fonction qui initialise un tableau avec "" . Mais le problème c'est que quand j'utilise un seul p[ ] , dans ma 2eme fonction quand je modifie une case tout les case sont modifié .j'ai essayé de faire avec un p2[ ] et la il modifie qu'un seule case. Mais comment je peut faire pour initialisé mon tableau car normalement je devrais avoir un tableau de 256 cases. car je peut pas faire de p[ ] a p256 [ ]. si qq1 pourrai m'aider car je vois vraiment pas comment faire
    je vous remercie d'avance

    voici le code :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #include <sys/types.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <errno.h>
    #include <stdlib.h>
    #include<sys/stat.h>
     
    void initialisation(char *tab[],int taille){
     
      int i;
      char p[2560]="";
       char p2[2560]="2";
      for(i=0; i<taille-1 ; i++){
        tab[i] =p;
      }
       tab[taille-1] =p2;
    }
     
    void codage(){ 
    char *tab[2560];
      int i,j; 
      int k=3;  
      char *zero="0";
      char *un="1"; 
     
      initialisation(tab,6);
      for(i=0; i<k ; i++){  
     
        tab[i]= strcat( tab[i] ,zero); 
      }   
      for(j=k; j < 6 ;j++){
     
        tab[j]=strcat( tab[j],un); 
      } 
         for(i=0;i<6;i++){
         printf("%s\n",tab[i]);
         }
    } 
     
    int main (int argc, char ** argv){
     
       codage();
     
        return (EXIT_SUCCESS);
     
    }
    et le resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    00011
    00011
    00011
    00011
    00011
    21

  2. #2
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void initialisation(char *tab[],int taille){
     
    int i;
    char p[2560]="";
    char p2[2560]="2";
    for(i=0; i<taille-1 ; i++){
    tab[i] =p;
    }
    tab[taille-1] =p2;
    }
    Attention, une fois sortis de ta fonction, ton tab[i] pointe vers une zone mémoire plus allouée.

    N'oublie pas d'utiliser les balises code, et de mettre un minimum en forme ton code (indentation) stp.

  3. #3
    Expert éminent sénior

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Points : 13 312
    Points
    13 312
    Par défaut
    Alors déjà pense à mettre ton code dans une balise code s'il te plait et puis pourrais tu être un peux plus explicite sur le but de ton code, le résultat qu'il devrait te donné par exemple car d'après ce que je vois il y a juste un manque d'allocation dans la boucle de ta première fonction. et petite remarque dans ton code tu n'as besoin que de deux bibliothèques et pas de toutes celles que tu as mise

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    en faite la 1ere fonction doit initiliser un tableau ( que j'utilise dans ma 2eme fonction) avec " " . et dans la 2eme fonction je veut maitre "1" dans une moitié du tableu et "0" dans la 2eme. Mais le probleme c'est que si j'utilise qu'un p[ ] dans la 1ere fonction toute les case de mon tableu on "000111" alors qu'il devrai avoir qu'une seule valeur. je sais d'ou ca vien mais je sais pa comment le corigé.
    pour les includes je sais qu'il ya trop mais c'est par ce que dans mon fichier il y a plus de fonction et elle on besoin de ces includes.
    si qq1 pourrait m'aider a resoudre mon probleme car moi je n'arive pas
    je vous remercie d'avance

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par choupinette116 Voir le message
    en faite la 1ere fonction doit initiliser un tableau ( que j'utilise dans ma 2eme fonction) avec " " . et dans la 2eme fonction je veut maitre "1" dans une moitié du tableu et "0" dans la 2eme. Mais le probleme c'est que si j'utilise qu'un p[ ] dans la 1ere fonction toute les case de mon tableu on "000111" alors qu'il devrai avoir qu'une seule valeur. je sais d'ou ca vien mais je sais pa comment le corigé.
    pour les includes je sais qu'il ya trop mais c'est par ce que dans mon fichier il y a plus de fonction et elle on besoin de ces includes.
    si qq1 pourrait m'aider a resoudre mon probleme car moi je n'arive pas
    je vous remercie d'avance
    Le tableau de pointeurs doit être initialisé avec des adresses qui soient

    - distinctes les unes des autres
    - valides.

    Or, non seulement, tu donnes à chaque fois l'adresse du premier élément du tableau, mais en plus, ce tableau n'existe plus une fois la fonction terminée.

    Je ne comprend pas ce que tu cherches à faire. Je suggère que tu commences par définir correctement le but sans parler des moyens pour le moment (phase de définition). Chaque chose en son temps.

    Déjà, une chose n'est pas claire. Si le tableau doit faire 256 cases, pourquoi est-il défini avec [2560]. C'est pas très logique, si ?

    Exemple typique de fausse solution :
    je voulais faire une fonction qui initialise un tableau avec ""
    Pourquoi faire ? Pourquoi créer un tableau de chaines vides de taille 1 et non modifiables ?

    on a vraiment besoin de connaitre la finalité de ton problème (1-définition) pour trouver la meilleure réponse (2-conception).

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Merci pour votre réponse.
    oui c'est ce que j'ai compris que les adresses doivent être distinctes les une des autres. mais je sais pas comment le faire. c'est a dire je peut pas crée "a la main" les 256 adresses. donc je voulais savoir si on peut le faire avec une boucle car je n'arrive pas.
    le 2eme problème lorsque je crée les tableau en dehors des fonction ( je les déclare comme variables globales j'ai des erreurs de segmentation )

    le but de la fonction c'est que je passe un tableau et il rajoute un "1" a la moitié du tableau et un "0" a la 2eme moitié. cette fonction sera appelé par une autre fonction qui l'appellera avec la moitié du tableau. c'est a dire a chaque fois on divise le tableau en 2 et on rajoute des "1" et des "0".
    a la fin dans chaque case je doit avoir des chaine de binaires. par dans la 1ere case du tableau "0001" .

    j'ai mis [2560] car quand j'ai testé avec [256] il m' affiché des erreur de segmentation. ( je sais pas pour quoi )

    si c'est un peu plus claire et si quelqu'un pourrai m' aidé car je suis bloqué
    je vous remercie pour votre réponse

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par choupinette116 Voir le message
    Merci pour votre réponse.
    oui c'est ce que j'ai compris que les adresses doivent être distinctes les une des autres. mais je sais pas comment le faire. c'est a dire je peut pas crée "a la main" les 256 adresses. donc je voulais savoir si on peut le faire avec une boucle car je n'arrive pas.
    Pour créer dynamiquement un tableau à 2 dimensions :

    http://emmanuel-delahaye.developpez.....htm#tabdyn_2d

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    bonjour,
    merci pour votre réponse. je vais essayé de faire un tableau a 2 dimension. j'aurais du pensé avant en tout cas merci pour l'idée. je vous dirais si j'ai reusi.

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

Discussions similaires

  1. problème avec const char * et #define macro
    Par CodeurNé dans le forum C
    Réponses: 5
    Dernier message: 20/09/2006, 21h25
  2. Classe clavier problème avec char
    Par benjiprog dans le forum Langage
    Réponses: 30
    Dernier message: 30/06/2006, 16h04
  3. Problème avec fonctions et string/char
    Par vdumont dans le forum C++
    Réponses: 6
    Dernier message: 08/04/2006, 16h54
  4. Réponses: 7
    Dernier message: 28/03/2006, 23h09
  5. (Problème avec...) conversion de std::string en char
    Par crossbowman dans le forum SL & STL
    Réponses: 7
    Dernier message: 05/03/2006, 19h54

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