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 :

Parser une chaine en C


Sujet :

C

  1. #1
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 935
    Points : 2 014
    Points
    2 014
    Par défaut Parser une chaine en C
    Bonjour

    Je reçois des chaines de caractère issues d'un fichier ini et j'ai besoin de les analyser pour traitement.
    Pour récupérer la valeur du paramètre reçu j'ai trouvé strchar qui me donne le contenu de la chaine après le '='
    mon soucis est que j'ai aussi besoin de ce qui est avant le '=' pour connaitre la paramètre à traiter (et vérifier que je connais ce paramètre)
    quelle peut être la fonction ad hoc pour ça ?

    pour être plus précis mes lignes ne sont pas exactement des INI standard, je reçois des lignes comme ceci :
    23:Nom du parametre=5465.5454
    le 23 au début est un numéro de paramètre
    idéalement il me faudrait donc récupérer 3 chaines :
    23 -> qui je transformerai en unsigned short qui me servira a retrouver le paramètre dans mon application
    Nom du paramètre -> qui me servira à vérifier que l'on parle bien du même paramètre '23'
    5465.5454 -> que je transformerai en float, c'est la valeur du paramètre

    Merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    En utilisant fscanf
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Il t'est aussi possible d'utiliser la fonction strchr. Petit exemple (vite fait de tête donc je garantis rien !) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    char *get_sub_part(const char *ta_string, char sep) {
        int length = strchr(ta_string, sep) - ta_string;
     
        if (length > 0) {
            return strndup(ta_string, length);
        }
        return NULL;
    }
     
    char *ta_string = "1:hey=12";
    char *part1 = get_sub_part(ta_string, ':'); // "1"
    char *part2 = get_sub_part(ta_string + strlen(part1) + 1, '='); // "hey"
    char *part3 = strdup(ta_string + strlen(part2) + 1); // "12"
    Ne pas oublier de free tout ça.

  4. #4
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 935
    Points : 2 014
    Points
    2 014
    Par défaut
    ok, compris strchr (c'est la fonction que j'avais cité en premier et mal noté (strcha))
    l'idée est de faire des soustraction sur les adresses des pointeurs pour retrouver les positions dans la chaine... ca parait tellement simple que je n'y avais pas pensé.

    mais ce fscanf semble enormissime !
    on donne le format attendu et hop il rempli tous les éléments ?
    genre pour 23:Nom parametre=323223.5454 je donne fscanf(Machaine,"%d:%s=%f, &MonNumleroDeParametre, &MonNomDeParametre, &Mavaleur) et d'un coup il me trouve un decimal, une chaine et un float ?

    je fonce tester cet engin de guerre

    Merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  5. #5
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    fscanf semble une solution adéquate à ton problème, en effet...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  6. #6
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 935
    Points : 2 014
    Points
    2 014
    Par défaut
    Re

    depuis tout à l'heure je me bas avec fscanf et je n'arrive rien a en faire
    j'ai tenté de faire simple avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    const char *MonTexte2 = "23 NomParamètre 4345.54";
    	unsigned short MonNumeroDeParametre;
    	char MonNomDeParametre[200]; //!!!!verifier que le nom fait bien moins de 200 caractères sinon plantage
    	float Mavaleur;
    	int status;
     
    status = fscanf(MonTexte2,"%d %s %f", &MonNumeroDeParametre, &MonNomDeParametre, &Mavaleur);
     
    	printf("%d\n",status);
    	printf("%d\n",MonNumeroDeParametre);
    	printf("%s\n",MonNomDeParametre);
    	printf("%f\n",Mavaleur);
    et ca me sort un status = -1 ( je suppose que c'est pas top) et mes 3 sorties ont des valeurs débiles

    avant de tester ce code "plus simple" je suis arrivé au meme echec avec mon besoin d'origine à savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const char *MonTexte = "23:Nom paramètre=4345.54";
    status = fscanf(MonTexte,"%d[^:]:%s[^=]=%f", &MonNumeroDeParametre, &MonNomDeParametre, &Mavaleur);
    j'ai cru comprendre que le [^:] voulait dire "convertir ce qui va jusqu'au caractère :"

    mais manifestement il y a un truc de base que je n'ai pas pigé :-(

    Merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  7. #7
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Essai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    status = sscanf(MonTexte,"%d:%[^=]=%f", &MonNumeroDeParametre, MonNomDeParametre, &Mavaleur);
    Edit: C'est sscanf et non fscanf, fscanf est à utiliser pour parser ligne par ligne un fichier, alors que sscanf parse une chaîne de caractères
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  8. #8
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 935
    Points : 2 014
    Points
    2 014
    Par défaut
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int MonNumeroDeParametre;
    	char MonNomDeParametre[200]; //!!!!verifier que le nom fait bien moins de 200 caractères sinon plantage
    	float Mavaleur;
    	int status;
     
    status = fscanf("23:Nom paramètre=4345.54","%d:%[^=]=%f", &MonNumeroDeParametre, MonNomDeParametre, &Mavaleur);
    ca me fait toujours n'importe quoi.
    J'ai passé MonNumeroDeParametre en int puisque apparemment c'est le type qui est demandé mais rien ne change.

    mais ce qui m’étonne aussi c'est que quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%f \n",Mavaleur);
    ca m'affiche
    %f
    on est bien d'accord que printf("%f \n",Mavaleur); c'est une syntaxe toute bête !?

    .unaise je n'arrive pas à faire tourner le moindre exemple de fscanf ! même avec juste un chiffre tout seul à lire
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  9. #9
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    "23:Nom paramètre=4345.54","%d:%[^=]=%f"
    Ce n'est pas ce que j'ai donné dans ma ligne de code ! et j'ai édité, utilises sscanf

    Le code devrait être

    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
    #include <stdio.h>
     
    int main(void){
     
        const char *MonTexte2 = "23:NomParamètre=4345.54";
     
        int MonNumeroDeParametre;
        char MonNomDeParametre[200];
        float Mavaleur;
        int status;
     
        status = sscanf(MonTexte2, "%d:%[^=]=%f", &MonNumeroDeParametre, MonNomDeParametre, &Mavaleur);
        if (status == 3)
            printf("valeur: %d, nom: %s, flottant: %f\n", MonNumeroDeParametre, MonNomDeParametre, Mavaleur);
     
        return 0;
    }
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  10. #10
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 935
    Points : 2 014
    Points
    2 014
    Par défaut
    J'avais bien testé comme demandé, j'ai juste tenté d'autres choses après dans le doute absolu où j’étais...

    Ca y est tout marche !!
    Mon problème de printf sur les float était présent aussi sur les scan. Je bosse sur microcontrôleur et par défaut les libs sont réduites en taille et ne gèrent pas les long long et float. Configuration du compilateur faite : tout fonctionne !

    pour le reste le problème venait effectivement du choix de la fonction, avec sscanf ca va beaucoup mieux ! Merci

    au final ça donne ça : (J'en profite pour mettre ce que j'ai adapté pour les doubles, si ça peut servir à un encore plus débutant que moi)
    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
    	const char *MonTexte2 = "1223:Nom paramètre=-4345.54";
     
    	int MonNumeroDeParametre;
    	char MonNomDeParametre[200]; //!!!!verifier que le nom fait bien moins de 200 caractères sinon plantage
    	float Mavaleur;
    	double Mondouble;
    	int status;
     
    	status = sscanf(MonTexte2, "%d:%[^=]=%f", &MonNumeroDeParametre, MonNomDeParametre, &Mavaleur); //pour les float	
    	printf("%d \n",status);
    	printf("valeur: %d, nom: %s, float: %f\n", MonNumeroDeParametre, MonNomDeParametre, Mavaleur);
     
     
    	status = sscanf(MonTexte2, "%d:%[^=]=%lf", &MonNumeroDeParametre, MonNomDeParametre, &Mondouble); //pour les doubles	
    	printf("%d \n",status);
    	printf("valeur: %d, nom: %s, float: %lf\n", MonNumeroDeParametre, MonNomDeParametre, Mondouble);
    ce qui donne
    3
    valeur: 1223, nom: Nom paramètre, float: -4345.540039
    3
    valeur: 1223, nom: Nom paramètre, float: -4345.540000
    maintenant, dernière question pour la route, histoire de comprendre, ce qui est bien l'essentiel
    Ceci
    %d:%[^=]=%f
    se traduit il bien par
    Un int suivi de ":" suivi de tous les caractères jusqu'à "=" suivi de "=" suivi d'un float
    ?

    Merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  11. #11
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Je pense que c'est ça. Un bon article sur scanf() http://xrenault.developpez.com/tutoriels/c/scanf/

    Au passage, quand je vois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	int MonNumeroDeParametre;
    	char MonNomDeParametre[200]; //!!!!verifier que le nom fait bien moins de 200 caractères sinon plantage
    	float Mavaleur;
    	double Mondouble
    , je me dis que ça sent la structure !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct
    {
    	int numero;
    	char nom[200];
    	float valeur;
    } param_t;

  12. #12
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 935
    Points : 2 014
    Points
    2 014
    Par défaut
    Merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  13. #13
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    salut petitours,

    Je ne sais pas du tout depuis quand tu pratique le C, mais le faîte que tu ne connaissait pas la famille des scanf souvent cité dans les exemples de livre pour débutant en C, m'étonne fortement.

    Un petit conseil: lire un livre de référence de la libc (la bibliothèque standart C) qui donc référence toutes les fonctions disponibles, comme celui-ci en français ou celui-ci en anglais.

    Conseil N°2: si tu est sous Linux lire un livre sur la programmation système en C comme celui-ci (écrit par Christophe Blaess celui qui a traduit en français les manpages de la glibc (gnulibc) de 1996 a 2003, donc une pointure.). prochaine version dispo le 20 août 2015. Ça apprends le fonctionnement des fonctions de le glibc (gnulibc) et du système Linux en plus de fournir des fonctions supplémentaires propre a la programmation système contenus dans la glibc (gnulibc), sans compter les extra.

    Il suffit de retenir le nom des (famille de) fonction(s) pour accéder aux manpages.

    PS: les caractères formateurs de scanf ne sont en partie pas les même que printf et co.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  14. #14
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 935
    Points : 2 014
    Points
    2 014
    Par défaut
    bonjour

    je pratique le C depuis quelques années déjà mais sur µC, sur des machines 8bit. Je n'ai jamais eu a manipuler de chaines pour autre chose que des printf destinés au debug. Là j'ai une application qui doit échanger avec un pc un fichier INI avec donc que du texte. Il y a quelques années j'avais vu la puissance du C par rapport à l'assembleur, la je la vois encore mieux avec la manipulation des chaines.
    Par contre jusque là mes applications faisaient 10 ou 20Ko de code grand grand max. Là je suis à plus de 50ko avec les librairies et je ne suis qu'au tout début !
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  15. #15
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    le faîte que tu ne connaissait pas la famille des scanf souvent cité dans les exemples de livre pour débutant en C, m'étonne fortement.
    J'ai envie de dire : tant mieux ! Tous les débutants commencent avec scanf(), trouve ça simple, et tombent rapidement sur les tonnes de problèmes que cette fonctionne implique pour des saisies au clavier ! Mieux vaut aborder scanf() (ou plutôt les fonctions de cette famille) quand le moment est vraiment venu, c'est-à-dire quand on a des saisies vraiment formatées !

    Il y a quelques années j'avais vu la puissance du C par rapport à l'assembleur, la je la vois encore mieux avec la manipulation des chaines.
    Et pourtant, le C est très limité pour le traitement de chaines de caractères ! Python s'y prêtent beaucoup mieux par exemple (sur PC bien sûr, sur MCU, tu ne pourras pas encore en profiter).

  16. #16
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut, juste en passant :

    Citation Envoyé par Luke spywoker Voir le message
    Je ne sais pas du tout depuis quand tu pratique le C, mais le faîte que tu ne connaissait pas la famille des scanf souvent cité dans les exemples de livre pour débutant en C, m'étonne fortement.
    en fait oui et non, je regardais encore dernièrement un documentaire sur l'école 42 par exemple, où l'apprentissage se fait de manière complètement autonome et non-supervisé, avec uniquement des épreuves et des mises en situation en guise d'évaluation
    on peut facilement envisager que la connaissance du langage qu'en a un élève de cette école ne correspondra pas tout à fait à celle qu'aura un élève d'un parcours plus classique (je ne porte pas ici un jugement en saimieu/saimal hein)

    Conseil N°2: si tu est sous Linux lire un livre sur la programmation système en C comme celui-ci (écrit par Christophe Blaess celui qui a traduit en français les manpages de la glibc (gnulibc) de 1996 a 2003, donc une pointure.)
    je confirme, ses bouquins sont en général des références et le gars est une sacrée pointure, on pourra également citer Programmation système en C sous Linux, du même auteur

  17. #17
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Salut juste pour dire:

    Et pourtant, le C est très limité pour le traitement de chaines de caractères ! Python s'y prêtent beaucoup mieux par exemple (sur PC bien sûr, sur MCU, tu ne pourras pas encore en profiter).
    Que comme une chaîne de caractère en C implique un pointeur et que j'ai vue quelque part:

    Que les pointeurs du C permettent d'avoir une vitesse d'exécution juste un peu moins rapide que les programmes assembleur.
    (Si l'on n'utilise que des pointeurs bien sur.).

    Sinon il est certains que la libc ne permet pas de traiter les chaînes de caractère comme en python.
    Mais bon avec les fonctions de la libc correctement utilisé et de l'arithmétique de pointeur l'on s'en sort.

    Sinon ont peut utiliser une lib destiner au traitement des chaînes de caractère, ça existe même si je n'en utilise pas, mise a part des fonctions string de la glib en conjonction avec un programme impliquant GTK.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

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

Discussions similaires

  1. Parser une chaine de caractère
    Par Nasky dans le forum C++
    Réponses: 7
    Dernier message: 04/12/2006, 19h37
  2. Parser une chaine de doubles
    Par Ange44 dans le forum C++
    Réponses: 9
    Dernier message: 28/06/2006, 13h12
  3. Réponses: 9
    Dernier message: 30/11/2005, 18h18
  4. Parser une chaine
    Par TieumB dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/01/2005, 11h20
  5. Parser une chaine en shell script
    Par Gogoye dans le forum Linux
    Réponses: 10
    Dernier message: 19/07/2004, 17h49

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