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:
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:
1 2 3
|
orange [fruit]
haricot [legume] |
Je me demande comment dois je formater la liste en mémoire ?
J'ai pensé à ca:
Code:
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.
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
Citation:
Voici un exemple d'un appel d'une fonction retournant un char*:
Code:
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.
Citation:
La variable liste contiendrait donc la liste de mes aliments. (c'est un exemple !)
La question qui se pose alors est "sous quelle forme ?"
Citation:
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.
Citation:
voici un affichage que j'aimerai observer:
Code:
1 2 3
|
orange [fruit]
haricot [legume] |
Je me demande comment dois je formater la liste en mémoire ?
J'ai pensé à ca:
Code:
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
Citation:
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 ?
Citation:
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.