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 :

Recherche dans fichier pour inventaire


Sujet :

C

  1. #21
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par edgarjacobs Voir le message
    Le zéro renvoyé par strcmp() n'a rien de magique.

    strcmp() compare octet par octet les deux variables qui les sont passées. Tant que la différence entre les deux octets vaut zéro, la comparaison se prolonge. Si les deux variables sont identiques, la dernière comparaison donnera une différence de zéro, c'est ce qui est renvoyé. A l'inverse, si à un moment quelconque la comparaison donne un résultat différent de zéro, c'est ce résultat qui est renvoyé (d'où le terme: un nombre < 0 ou supérieur à 0). Ainsi 'A' cmp 'C' renverra -2 et 'C' cmp 'A' renverra 2
    Ça, c'est un détail d'implémentation. La norme C11 dit seulement ceci:
    The sign of a nonzero value returned by the comparison functions memcmp, strcmp, and strncmp is determined by the sign of the difference between the values of the first pair of characters (both interpreted as unsigned char) that differ in the objects being compared.
    Ce qui veut dire qu'une implémentation pourrait tout aussi bien limiter ses retours à { -42, 0, 42 } tout en restant conforme.
    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.

  2. #22
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sambia39 Voir le message
    De mémoire, le langage de programmation C considère les valeurs zéro sous toutes ses formes comme étant fausses et "un" comme vrai. Cela est dû au fait que le langage de programmation C ne dispose pas d’un véritable type booléen à proprement parler.
    Plus précisément C considère 0=faux et "pas 0" = vrai. if (5) printf("ok\n"); affichera "ok" parce que "5" est vu comme "vrai".

    Citation Envoyé par sambia39 Voir le message
    Il faut se l’avouer : l’emploi "==" est une pratique répandue et également (peut-être) pour de nombreuses raisons que vous évoquez, à savoir plus de lisibilité et de maintenabilité, mais dans les faits, elle met en évidence non pas un test de nullité, mais bien un test booléen d’une part et de l’autre un test booléen pour celui qui lit l’instruction.
    Exact. Est-ce que le résultat de la fonction vaut 0 ? réponse oui ou non => c'est bien une expression booléenne.

    Citation Envoyé par sambia39 Voir le message
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef enum{
    	TRUE = 1,
    	FALSE = (!TRUE)
    }BOOL;
    Moi j'aurais plutôt écrit
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef enum{
    	FALSE = 0,
    	TRUE = !FALSE
    }BOOL;

    Citation Envoyé par sambia39 Voir le message
    Question rigueur, on pourrait se poser la question de savoir ce que signifie réellement le zéro "magique", comparé avec la valeur que retourne la fonction strcmp (surtout, que la fonction est susceptible de renvoyer une valeur autre que zéro), le zéro magique veut-il dire false, true, que les deux chaînes sont égales, un pointeur nul ...?.
    Non, c'est juste question d'équilibre (ou d'harmonie). Imaginons c1 et c2 deux chaines sur une balance type Roberval. Soit c1 est plus grande que c2 et l'aiguille penche vers c1, soit c1 est plus petite que c2 et l'aiguille penche vers c2, soit elles sont égales et l'aiguille reste au neutre. Et quelle est la valeur "communément" admise comme "neutre" ? Réponse zéro (élément neutre de l'addition et de la soustraction).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #23
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    . Et quelle est la valeur "communément" admise comme "neutre" ? Réponse zéro (élément neutre de l'addition et de la soustraction).
    Si je puis me permettre de m'immiscer dans cette conversation d'expert ,le zéro est l'élément neutre de l'addition mais l'élément absorbant de la multiplication !
    Ca change rien c'était juste pour faire avancer le schmilblik ....

  4. #24
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par exe2bin Voir le message
    Si je puis me permettre de m'immiscer dans cette conversation d'expert ,le zéro est l'élément neutre de l'addition mais l'élément absorbant de la multiplication !
    Merci pour tes lumières
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #25
    Membre expérimenté
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 543
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,
    Citation Envoyé par Sve@r Voir le message
    Plus précisément C considère 0=faux et "pas 0" = vrai. if (5) printf("ok\n"); affichera "ok" parce que "5" est vu comme "vrai".

    "Non, c'est juste question d'équilibre (ou d'harmonie). Imaginons c1 et c2 deux chaines sur une balance type Roberval. Soit c1 est plus grande que c2 et l'aiguille penche vers c1, soit c1 est plus petite que c2 et l'aiguille penche vers c2, soit elles sont égales et l'aiguille reste au neutre. Et quelle est la valeur "communément" admise comme "neutre" ? Réponse zéro (élément neutre de l'addition et de la soustraction)".
    D'accord, mais ici, je parle bien du fait qu'en langage C, le zéro sous toutes ces formes est considéré comme étant faux et le contraire vrai. Quand bien même en tenant compte de votre remarque du pas zéro cela est égal à vrai ; ceci n'est pas faux puisque tout ce qui n'est "pas zéro" est forcément vrai, tout comme tout ce qui est positif est vrai parce qu'il n'est point négatif. (Ou je n'ai pas bien saisi votre remarque ? & personnellement, je vois les choses autrement sur la question rigueur pour le zéro magique que j'ai déjà évoqué).

    à bientôt.
    Celui qui peut, agit. Celui qui ne peut pas, enseigne.
    Il y a deux sortes de savants: les spécialistes, qui connaissent tout sur rien,
    et les philosophes, qui ne connaissent rien sur tout.
    George Bernard Shaw

Discussions similaires

  1. Besoin d'aide écriture dans fichier
    Par boniface dans le forum Modules
    Réponses: 3
    Dernier message: 29/01/2007, 18h06
  2. Recherche dans fichier
    Par Débéa dans le forum Général Python
    Réponses: 2
    Dernier message: 26/07/2006, 14h51
  3. recherche dans fichier xml
    Par piro dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/03/2006, 08h11
  4. Réponses: 4
    Dernier message: 28/10/2005, 09h59
  5. Recherche dans fichiers
    Par Tchinkatchuk dans le forum Linux
    Réponses: 2
    Dernier message: 17/06/2005, 10h32

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