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 :

!= et =! ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Par défaut != et =! ?
    Bonjour ,

    voilà le code d'un programme qui lit des fichiers texte :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
    #include <stdlib.h>
     
    #define BUFSIZE 100
     
    void main()
    {
    	int k;
    	char buf[BUFSIZE];
    	char filename[60];
    	FILE *fp;
     
    	puts("Indiquez le nom du fichier texte a afficher : ");
        gets(filename);
     
        if ((fp=fopen(filename,"r"))==NULL)
    	{
    		fprintf(stderr,"Erreur a louverture du fichier.");
    		exit(1);
    	}
     
    	do
    	{
    		fgets(buf,BUFSIZE,fp);
    		if(k =! feof(fp))printf("%s",buf);
    	}while(k);
     
    	fclose(fp);
    }
    mais je me demande ,à propos de cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(k =! feof(fp))printf("%s",buf);
    qu'est ce que c'est que ' =! ' ? Pour 'différent de' ce n'est pas '!=' ??

    Je sais que ce n'est pas identique car j'ai essayé avec '!=' et le programme continue de lire après la fin du fichier à l'infini




    Zazeglu

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    x =! y s'analyse comme x = (!y)
    c-a-d x =! 0 donne x = 1
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 21
    Par défaut
    2 choses :
    -c 'est bien "!=" et non pas "=!"
    -Certes, tu declare "k", re-certes, tu continue ta boucle tant que k est different de NULL, mais le souci, c'est que tu n'initialise pas "k", il a donc une valeur aleatoire et definitivement : ta boucle est donc infini, vala 8)

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Par défaut
    Citation Envoyé par Trap D
    x =! y s'analyse comme x = (!y)
    c-a-d x =! 0 donne x = 1
    !x est l'equivalent du /x ?

    si x = 1, /x = 0
    si x = 0, /x = 1

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Par défaut
    Je pens avoir compris ;
    mais avec "!=" cela ne fonctionne pas darkalia ,j'ai essayé

    Merci

    Zazeglu

  6. #6
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    C'est Trap D qui a raison à mon sens... C'est une notation concise, mais niveau lisibilité c'est pas le top je trouve.

  7. #7
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Je suis d'accord avec Trap D, ca permet d'ailleurs d'initialiser k pour le test du while, mais c'est pas super lisible.

    petite precision au passage x=!0 ne donne pas forcement x=1 mais initialise x a une valeur non nulle (TRUE)

    Citation Envoyé par Willand
    !x est l'equivalent du /x ?
    L'operateur unaire / n'existe pas en C. / est l'operateur de division.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 134
    Par défaut
    Merci bien pour vos réponses

    Zazeglu

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Par défaut
    Citation Envoyé par gl
    Citation Envoyé par Willand
    !x est l'equivalent du /x ?
    L'operateur unaire / n'existe pas en C. / est l'operateur de division.
    je sais : là je parlais en logique combinatoire

  10. #10
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par Willand
    Citation Envoyé par gl
    Citation Envoyé par Willand
    !x est l'equivalent du /x ?
    L'operateur unaire / n'existe pas en C. / est l'operateur de division.
    je sais : là je parlais en logique combinatoire
    Oups ! Alors oui c'est bien ca.

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Par défaut
    ok merci

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

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