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 :

Plusieurs champs dans un char * ?


Sujet :

C

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2003
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 222
    Par défaut Plusieurs champs dans un char * ?
    Bonjour,
    je désire écrire des fonctions qui retournent toutes un char *.

    Voici un exemple d'un appel d'une fonction retournant un char*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char * liste = getAliments();
    La variable liste contiendrait donc la liste de mes aliments. (c'est un exemple !)

    J'aimerai pouvoir maintenant découper la chaine liste pour pouvoir traiter les différents champs (correspondant aux aliments et sa classe (fruit/legume))
    voici un affichage que j'aimerai observer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    orange [fruit]
    haricot [legume]
    Je me demande comment dois je formater la liste en mémoire ?
    J'ai pensé à ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    liste = "orange$fruit#haricot$legume"
    On distingue bien le caractère # pour separer les groupes et $ pour séparer les différents champs d'un groupe.

    Le problème c'est que je suis obligé de comdamner ces 2 caractères, et je ne veux pas (Ils peuvents très bien se retrouver dans un buffer d'un paquet IP par exemple !!)

    Donc après réflexion, je me tourne vers vous, en espérant trouver quelqu'un qui m'aidera....

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Je ne suis pas sure de comprendre ce que tu veux mais une liste (en un tableau) de structures ne serait pas mieux ?

    genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
     
    typedef struct Aliments{
      char nom[50];
      char type[25];
    } Aliments;
     
    typedef struct AlimentsTab{
      Aliments* tab;
      int countAlim;
    }AlimentsTab;
     
    AlimentsTab = getAliments();
    Tu peux egalement utiliser des enums pour le type.

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2003
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 222
    Par défaut
    Non je ne peux pas utiliser de structure car le retour doit être affichable !

    Je dois être le plus générique possible !

  4. #4
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Ok tu voudrais une sorte de sérialisation c'est ca ?

  5. #5
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    re réponse bête mais et XML ?

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Plusieurs champs dans un char * ?
    Citation Envoyé par MonsieurAk
    Bonjour,
    je désire écrire des fonctions qui retournent toutes un char *.
    C'est quoi un 'char *' ?

    http://emmanuel-delahaye.developpez.....htm#char_star
    Voici un exemple d'un appel d'une fonction retournant un char*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char * liste = getAliments();
    En fait, elle retourne l'adresse d'un char ou d'un tableau de char. Cette adresse doit être valide après l'exécution de la fonction, ce qui n'est pas évident à priori... L'adresse d'une variable locale est évidemmment interdite. Celle d'un bloc libéré aussi.
    La variable liste contiendrait donc la liste de mes aliments. (c'est un exemple !)
    La question qui se pose alors est "sous quelle forme ?"
    J'aimerai pouvoir maintenant découper la chaine liste pour pouvoir traiter les différents champs (correspondant aux aliments et sa classe (fruit/legume))
    Si tu parles d'une chaine de caractères, il y a plusieurs façon de faire. La plus 'dynamique' est probablement la notation XML.
    voici un affichage que j'aimerai observer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    orange [fruit]
    haricot [legume]
    Je me demande comment dois je formater la liste en mémoire ?
    J'ai pensé à ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    liste = "orange$fruit#haricot$legume"
    On distingue bien le caractère # pour separer les groupes et $ pour séparer les différents champs d'un groupe.
    Pourquoi pas. Il y a plusieurs façons de faire. Ce n'est pas une question de langage C. (Je signale quand même que '$' ne fait pas partie des caractères standards du langage C).

    http://emmanuel-delahaye.developpez.com/codage.htm
    Le problème c'est que je suis obligé de comdamner ces 2 caractères, et je ne veux pas (Ils peuvents très bien se retrouver dans un buffer d'un paquet IP par exemple !!)
    Dans les données ? par quel miracle ?
    Donc après réflexion, je me tourne vers vous, en espérant trouver quelqu'un qui m'aidera....
    A mon avis, XML est un bon choix. Pas très léger en termes de taille, mais lisible, bien documenté et de plus en plus utilisé.

    http://www.w3.org/XML/

    Il existe des bibliothèques portables.

    http://xmlsoft.org/
    http://expat.sourceforge.net/

    etc.

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2003
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 222
    Par défaut
    En fait, elle retourne l'adresse d'un char ou d'un tableau de char. Cette adresse doit être valide après l'exécution de la fonction, ce qui n'est pas évident à priori...
    Ah bon ?

    L'adresse d'une variable locale est évidemmment interdite. Celle d'un bloc libéré aussi
    Bien entendu !

    Ce n'est pas une question de langage C
    Donc j'aurais du mettre cette question où ? Je pense que au contraire c'est une question de langage C puisque, le développement sera en C. Après si c'était une question purement en rapport avec le langage C, je ne crois pas que je ferais appel à developpez.com mais plutot aux nombreux ouvrages...

    Je signale quand même que '$' ne fait pas partie des caractères standards du langage C
    Ce n'était qu'un exemple.

    Dans les données ? par quel miracle ?
    Pas compris ce que tu voulais dire ??

    A mon avis, XML est un bon choix. Pas très léger en termes de taille, mais lisible, bien documenté et de plus en plus utilisé

    Je ne pense pas avoir besoin d'utiliser XML (trop lourd pour le peu d'informations à transiter, au maximum 2Mo), je vais plutot comdamné différents symboles pour différencer les différents champs contenu dans mon tableau de char, bien pratique, simple à mettre en oeuvre et lorsque les données seront suceptibles de contenir mes symboles et bien le retour sera uniquement un champ !

    Merci pour votre avis !

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par MonsieurAk
    Ce n'est pas une question de langage C
    Donc j'aurais du mettre cette question où ?
    "Informatique générale & Hardware" ?
    Je pense que au contraire c'est une question de langage C puisque, le développement sera en C.
    Est-ce que le format des données dépend du langage ?

    Non, bien sûr. C'est une question de spécifications d'interface (phase 1 de la vie d'un projet).
    Après si c'était une question purement en rapport avec le langage C, je ne crois pas que je ferais appel à developpez.com mais plutot aux nombreux ouvrages...
    T'as raison, Le langage C, on y connait rien...
    Dans les données ? par quel miracle ?
    Pas compris ce que tu voulais dire ??
    Tu dis
    Le problème c'est que je suis obligé de comdamner ces 2 caractères, et je ne veux pas (Ils peuvents très bien se retrouver dans un buffer d'un paquet IP par exemple !!)
    Je ne comprend pas le problème. On a le droit de mettre ce qu'on veut (0-255) dans les octets de donnée d'un paquelt IP... Quand aux données de l'entête, tu ne les verras jamais au niveau utilisateur.
    A mon avis, XML est un bon choix. Pas très léger en termes de taille, mais lisible, bien documenté et de plus en plus utilisé
    Je ne pense pas avoir besoin d'utiliser XML (trop lourd pour le peu d'informations à transiter, au maximum 2Mo)<...>
    Alors CSV. (Comma Separated Values)

    Encore une fois, rien de tout celà n'a un quelquonque rapport avec le langage C...

  9. #9
    Membre éclairé
    Inscrit en
    Septembre 2003
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 222
    Par défaut
    T'as raison, Le langage C, on y connait rien...
    En aucun cas je ne voulais vous offenser !

    Est-ce que le format des données dépend du langage ?
    Il se peut tout à fait que le langage crée des contraintes.

    Quand aux données de l'entête, tu ne les verras jamais au niveau utilisateur.
    Tu en es sur ??? Certains ??? (Et bien alors je suis heureux de pouvoir en ce jour t'informer, toi, que si ou peut au niveau utilisateur avoir toutes les données de l'entête via un petit driver ndis

    Pour CVS c'est ce que j'utilise...

    Merci encore !

    PS: Je répète que je ne porte aucune offense aux participants de ce forum. Nombreuses sont les fois où ce forum m'a aidé (notamment toi, à plusieurs reprises déjà.)

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par MonsieurAk
    Quand aux données de l'entête, tu ne les verras jamais au niveau utilisateur.
    Tu en es sur ??? Certains ???
    A moins de travailler en mode 'RAW' évidemment...

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

Discussions similaires

  1. [Requête] plusieurs champs dans une même table ayants la même source
    Par Christophe93250 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/04/2006, 16h18
  2. Addition de plusieurs champs dans champ indépendant
    Par snoopy69 dans le forum Access
    Réponses: 3
    Dernier message: 11/11/2005, 09h37
  3. regrouper plusieurs champ dans un seul en requete
    Par Nicko29 dans le forum Access
    Réponses: 12
    Dernier message: 07/09/2005, 18h29
  4. Ramener plusieurs champs dans une sous requête...
    Par David.V dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 12/01/2005, 07h54
  5. [CR9] Plusieurs champs dans details
    Par maxxou dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 28/01/2004, 13h35

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