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 :

Une faiblesse du C ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Par défaut Une faiblesse du C ?
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char * fgets (char * s, int size, FILE * stream);
    évidement si size est de type entier signé, il faut condamner un size-t de type entier non signé.

    Faudra m'expliquer toutes ces vieilleries qui trainent au nom du règlement

  2. #2
    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 dj.motte Voir le message
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char * fgets (char * s, int size, FILE * stream);
    évidement si size est de type entier signé, il faut condamner un size-t de type entier non signé.

    Faudra m'expliquer toutes ces vieilleries qui trainent au nom du règlement
    C'est pas très clair ce que tu dis et en plus ça a été déjà été débattu et expliqué. Tu veux dire quoi au juste ? Qu'il y a une incohérence ?

    Oui, c'est possible. L'important est de le savoir et de prendre les précautions qui s'imposent, ou, comme je l'ai déjà dit, d'écrire une autre fonctions plus conforme à l'usage qu'on en fait. C'est tout à fait possible en C standard à coup de fgetc().

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Par défaut
    Salut,
    C'est pas très clair ce que tu dis et en plus ça a été déjà été débattu et expliqué. Tu veux dire quoi au juste ? Qu'il y a une incohérence ?
    ben oui, l'argument size devrait être de type size_t. Mais je suppose que l'on va rationaliser ce choix d'un type int par des explications complexes.

    Enfin un int c'est toujours mieux qu'un short !

  4. #4
    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 dj.motte Voir le message
    ben oui, l'argument size devrait être de type size_t. Mais je suppose que l'on va rationaliser ce choix d'un type int par des explications complexes.
    Il n'y a pas d'autre explication que l'histoire. Quand le C a été inventé en 1973, il n'existait pas de 'size_t'. Le choix de int était cohérent avec les pratiques de l'époque.

    Quand le C a été normalisé en 1989 (ANSI) / 1990 (ISO), le type size_t (entier non signé capable de contenir la taille en bytes du plus grand objet adressable d'une implémentation donnée) a été ajouté à la norme. dans le même temps, la définition de l'opérateur sizeof a été modifiée pour retourner un size_t. Un certain nombre de fonctions ont été modifiées aussi comme strlen() ou malloc(). Malheureusement, et je reconnais que c'est inexplicable, fgets() a échappé à la modification.

    C'est une incohérence de plus, c'est tout. Le langage C est loin d'être parfait, on le sait. C'est les cas de tous les langages issus du terrain. Tu peux toujours essayer le langage D si tu veux une évolution plus cohérente du C.

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Par défaut
    Bonjour,

    C'est une incohérence de plus, c'est tout. Le langage C est loin d'être parfait, on le sait. C'est les cas de tous les langages issus du terrain. Tu peux toujours essayer le langage D si tu veux une évolution plus cohérente du C.
    Bah c'est pas grave, je ne vais pas changer de langage pour une petite incohérence. Cependant fread et fwrite ont bien intégré le size_t.

    Le langage D je ne connais pas. Est-ce vraiment utilisé ? Moins usine à gaz que le C++ avec sa template mania ?

  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
    Citation Envoyé par dj.motte Voir le message
    Bah c'est pas grave, je ne vais pas changer de langage pour une petite incohérence. Cependant fread et fwrite ont bien intégré le size_t.
    T'es lourd...

Discussions similaires

  1. les erreurs communes conduisant a une faiblesse de l'appli
    Par Lorenzo77 dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 13/01/2009, 21h22
  2. taille maximale d'une base de donnée paradox
    Par Anonymous dans le forum Paradox
    Réponses: 5
    Dernier message: 14/02/2004, 17h39
  3. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  4. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

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