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 :

Un printf différent


Sujet :

C

  1. #21
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Dans cette solution, tu crées par allocation dynamique le C_Str en allouant suffisamment d'espace pour stocker la longueur (et les autres paramètres si il y a lieu) ET la chaine de caractères (plus un zéro terminal). (Voirl'exemple donné par Médinoc 2 messages avant celui-ci).

    Les modifications du code pour passer à cette solution sont assez faciles à situer et à apporter puisque par rapport au code précédent, elles apparaissent comme un prélude à la fonction actuelle permettant de situer l'adresse de la structure par rapport à l'adresse de la chaine et en sortie (si il y a lieu) passer de l'adresse de la structure à celle de la chaine.
    Par contre, si tu changes la longueur de la chaine, alors tu dois procéder à une réallocation du C_Str. C'est le principal inconvénient : l'adresse du C_Str peut changer. Ceci peut amener à modifier le prototype des fonctions et leur appel.

    Une question, comment envisages-tu l'implémentation du fscanf ?

    Est-ce que c'est garantit par la norme ou cela peut changer suivant l'OS ?
    n1256 :
    6.7.2.1 Structure and union specifiers
    ...
    13 Within a structure object, the non-bit-field members and the units in which bit-fields reside have addresses that increase in the order in which they are declared. A pointer to a structure object, suitably converted, points to its initial member (or if that member is a bit-field, then to the unit in which it resides), and vice versa. There may be unnamed padding within a structure object, but not at its beginning.

  2. #22
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par diogene Voir le message
    Dans cette solution, tu crées par allocation dynamique le C_Str en allouant suffisamment d'espace pour stocker la longueur (et les autres paramètres si il y a lieu) ET la chaine de caractères (plus un zéro terminal). (Voirl'exemple donné par Médinoc 2 messages avant celui-ci).
    Oui ok, ca fait quelques manipulations en plus, surtout que tout doit être transparent pour l'utilisateur

    Citation Envoyé par diogene Voir le message
    ...
    Par contre, si tu changes la longueur de la chaine, alors tu dois procéder à une réallocation du C_Str. C'est le principal inconvénient : l'adresse du C_Str peut changer. Ceci peut amener à modifier le prototype des fonctions et leur appel.
    Oui un gros inconvénient re-

    Citation Envoyé par diogene Voir le message
    Une question, comment envisages-tu l'implémentation du fscanf ?
    En fait c'est même pas en prévision, je ne sais pas si je vais aller jusque là re-re- Tu sais à la base cette bibliothèque n'était destinée qu'à mon usage personnel vu qu'elle était conçu pour me faciliter un peu la vie pour la gestion des chaînes
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #23
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Petite question: est-ce qu'il est possible de modifier manuellement le contenu d'une liste variable ?

    Je veux dire par là, parcourir la liste et changer certains arguments comme dans mon cas, si l'un d'entre eux se trouve être un objet cstr mettre à la place la chaîne qu'il contient !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #24
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    UP
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #25
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut
    Citation Envoyé par Franck.H Voir le message
    Petite question: est-ce qu'il est possible de modifier manuellement le contenu d'une liste variable ?

    Je veux dire par là, parcourir la liste et changer certains arguments comme dans mon cas, si l'un d'entre eux se trouve être un objet cstr mettre à la place la chaîne qu'il contient !
    C'est tout d'abord une liste de pointeurs "vers" des structures dont le type est dans ce cas particulier donné par le format. Donc on peut faire ce qu'on veut pourvu que cela soit fait proprement.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #26
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    C'est tout d'abord une liste de pointeurs "vers" des structures dont le type est dans ce cas particulier donné par le format. Donc on peut faire ce qu'on veut pourvu que cela soit fait proprement.
    - W
    Je vais faire quelques tests pour voir ca
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #27
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    C'est tout d'abord une liste de pointeurs "vers" des structures dont le type est dans ce cas particulier donné par le format. Donc on peut faire ce qu'on veut pourvu que cela soit fait proprement.
    - W
    Exact, mais faudrait savoir si c'est une structure ou une chaîne... Cela risque d'être tendu, non?

    Jc

  8. #28
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par fearyourself Voir le message
    Exact, mais faudrait savoir si c'est une structure ou une chaîne... Cela risque d'être tendu, non?

    Jc
    Tiens tiens ca fait longtemps Bin mon objet est une structure mais il contient une chaîne... faut je regarde, je sais pas encore vraiment comment faire sinon au pire, faudra que j'abandonne l'idée de faire des wrapper de printf pour mon objet
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  9. #29
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Comme je l'ai dit, un pointeur de structure comme celui que j'ai proposé, passe pour une chaîne aux yeux de printf()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #30
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut Ca se disperse?
    Frank H. souhaitait cela dans un contexte bien particulier:

    Je veux dire par là, parcourir la liste et changer certains arguments comme dans mon cas, si l'un d'entre eux se trouve être un objet cstr mettre à la place la chaîne qu'il contient !
    Le cas général est un 'rat hole'.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Comportement de printf différent en local et distant
    Par xion1024 dans le forum Langage
    Réponses: 2
    Dernier message: 02/04/2008, 12h05
  2. 2 printf identiques affichent resultats différents
    Par Margatthieu dans le forum C
    Réponses: 6
    Dernier message: 13/01/2008, 13h59
  3. Simulation de transmission de paquet entre différent réseaux
    Par MelloW dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 19h51
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. Réponses: 2
    Dernier message: 17/05/2002, 20h37

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