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 :

type d'assignement incorrect avec str_sub


Sujet :

C

  1. #1
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut type d'assignement incorrect avec str_sub
    Rebonsoir,

    c'est encore moi, désolé

    J'utilise toujours la fonction str_sub (pour extraire une sous chaine) et str_split (pour éclater une chaine), voici un extrait du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char **t = NULL;
    char ch[100];
    char * str; 
    ...
     
    ch=str_sub (str,19,l);   (*)       
    t=str_split (ch,",");
    Et j'ai le message d'erreur:
    "incompatible type in assignment"

    cela vient de la ligne (*) ou le ch tableau de caractère ne convient pas, la fonction renvoit un char*...

    Comment contourner ce problème récurrent..

    Merci à vous,

    @+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  2. #2
    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 User Voir le message
    J'utilise toujours la fonction str_sub (pour extraire une sous chaine) et str_split (pour éclater une chaine), voici un extrait du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char **t = NULL;
    char ch[100];
    char * str; 
    ...
     
    ch=str_sub (str,19,l);   (*)       
    t=str_split (ch,",");
    Et j'ai le message d'erreur:
    "incompatible type in assignment"

    cela vient de la ligne (*) ou le ch tableau de caractère ne convient pas, la fonction renvoit un char*...

    Comment contourner ce problème récurrent..
    On ne 'contourne ' pas un problème. On le résout.

    ch est un tableau. On ne peut pas assigner un tableau. Ici, je recommande un pointeur. Attention, une fois que le bloc alloué n'est plus utilisé, on doit le libérer.

    Tout cela était dans le code de test que j'avais publié... Ce n'était pas pour faire beau... J'avais bien dit de poser des questions si tu ne le comprenais pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    char **t = NULL;
    char *ch;
    char * str; 
    ...
     
       ch=str_sub (str,19,l);
       if (ch != NULL)
       {
          t  =str_split (ch,",");
     
          free (ch), ch = NULL;
       }
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Oui mais précisément, je ne peux pas passer un char *ch à la fonction str_split
    car dans ce cas la fonction str_split plante:

    http://www.developpez.net/forums/sho...d.php?t=540561

    Et le problème reste entier (c'est pour cela que je parlais de "contourner le problème")

    @+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  4. #4
    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 User Voir le message
    Oui mais précisément, je ne peux pas passer un char *ch à la fonction str_split
    car dans ce cas la fonction str_split plante:
    Ca, c'est une autre problème. Je n'ai pas testé str_split(). Pas le temps aujourd'hui..

    En fait tu n'as pas compris pourquoi str_split() plantait avec ton exemple. C'est pas pas à cause du pointeur, mais du fait que le pointeur pointait sur une zone non modifiable (chaine littérale).

    Or ici, str_sub() crée une zone modifiable (malloc() ... ), il n'y a donc aucun problème. Tu n'as même pas fait l'essai...
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 261
    Points : 19 424
    Points
    19 424
    Billets dans le blog
    63
    Par défaut
    Ok Emmanuel,

    tu as raison ca à l'air de fonctionner.

    Merci pour l'info.

    PS: j'avais bien lu ton explication précédente mais je m'était concentré sur la fonction str_split().

    (ce n'est que m'a deuxième journée de c )

    @+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

Discussions similaires

  1. Conversion incorrecte avec atof ou strtod
    Par sber74 dans le forum C
    Réponses: 16
    Dernier message: 15/03/2006, 20h32
  2. Réponses: 4
    Dernier message: 05/12/2005, 19h24
  3. Affichage incorrect avec une JScrollPane
    Par tck-lt dans le forum Agents de placement/Fenêtres
    Réponses: 23
    Dernier message: 04/08/2005, 11h07
  4. Réponses: 2
    Dernier message: 03/08/2005, 00h39
  5. wcout, wofstream, etc. : types de la STL, avec Dev-C++
    Par forum-dev dans le forum Dev-C++
    Réponses: 3
    Dernier message: 01/03/2005, 23h03

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