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 :

Probleme avec les char


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4
    Par défaut Probleme avec les char
    Allo ! Je debute en programation et je suis aller à la bibliotheque me chercher un livre sur le C. Ce livre offre quelques exercices suivi d'explications. Mais je bloque a une place : Je dois comparer mon char a une donner de type "O"(exemple) comme le demontre ce code (J'ai prit dirrectement la reponse de l'exercice du livre) :

    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
    int main(void)
    {
    	int n_e ;
    	char c ;
     
    	printf ("donnez une ligne :\n") ;
    	n_e = 0 ;
     
    	do
    	{
    		scanf ("%c", &c) ;
    		if (c == "e") 
    		n_e = n_e + 1 ;
    	}
    	while ( c != "\n" ) ;
    	printf ("Votre ligne comporte %d caracteres e", n_e") ;
    }
    et ca me dit :

    D:\Program Files\Microsoft Visual Studio\MyProjects\Essais\essais.cpp(14) : error C2446: '==' : no conversion from 'char *' to 'int'
    This conversion requires a reinterpret_cast, a C-style cast or function-style cast
    D:\Program Files\Microsoft Visual Studio\MyProjects\Essais\essais.cpp(14) : error C2040: '==' : 'int' differs in levels of indirection from 'char [2]'
    D:\Program Files\Microsoft Visual Studio\MyProjects\Essais\essais.cpp(17) : error C2446: '!=' : no conversion from 'char *' to 'int'
    This conversion requires a reinterpret_cast, a C-style cast or function-style cast
    D:\Program Files\Microsoft Visual Studio\MyProjects\Essais\essais.cpp(17) : error C2040: '!=' : 'int' differs in levels of indirection from 'char [2]'
    D:\Program Files\Microsoft Visual Studio\MyProjects\Essais\essais.cpp(18) : error C2001: newline in constant
    D:\Program Files\Microsoft Visual Studio\MyProjects\Essais\essais.cpp(18) : error C2143: syntax error : missing ')' before 'string'
    D:\Program Files\Microsoft Visual Studio\MyProjects\Essais\essais.cpp(19) : warning C4508: 'main' : function should return a value; 'void' return type assumed
    Merci de votre reponse

  2. #2
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    des erreurs de recopiage sans doute:
    devrais etre:
    pareil pour:
    y'en as surement d'autres.

  3. #3
    Membre Expert

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Par défaut
    Citation Envoyé par Dark_Ebola
    y'en as surement d'autres.
    Un include de stdio.h au début, un retour à la ligne a la fin du printf(3), un return à la fin pour dire que tout s'est bien passé en renvoyant 0.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4
    Par défaut
    Ah oui c'est donc ca J'avait mit des " a la place des '. Merci Et oui j'ai mit mon #include "STDIO.H" au debut, c'etait juste pour donner le code concerner.

    Mais quel est la difference entre " et ' ?

  5. #5
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Citation Envoyé par king67
    Mais quel est la difference entre " et ' ?
    Dans ton cas:
    "e" représente une chaine de caractères et non le caractère 'e'.
    La chaine "e" est composé de deux caractères: 'e' et '\0' représentant le caractère de fin de chaîne.

  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 king67
    Et oui j'ai mit mon #include "STDIO.H"
    Si tu as trouvé cette syntaxe dons ton 'livre', tu peux aller le rapporter illico à la bibliothèque. Il y a des références de vrais livres et de vrais sites de C sur mon site (ma signature).

  7. #7
    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 king67
    int main(void)
    {
    OK, mais

    D:\Program Files\Microsoft Visual Studio\MyProjects\Essais\essais.cpp(14) : error C2446: '==' : no conversion from 'char *' to 'int'
    This conversion requires a reinterpret_cast, a C-style cast or function-style cast
    Attention, tu es en train d'utiliser un compilateur C++ pour compiler du C. C'est une erreur. C et C++ sont des langages différents.

    Pour compiler en C, il faut que l'extension du fichier soit .c et non .cpp comme ici, et il y a peut être un reglage supplémentaire à faire avec Visual C++.

  8. #8
    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
    Sous un Visual récent, il suffit de renommer le fichier depuis l'IDE.
    Sous Visual 6, l'unique moyen que je connaisse, c'est retirer le fichier du projet, le renommer, et le réinclure au projet...
    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.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4
    Par défaut
    Tout d'abord, merci de vos reponse rapide et clairs, c'est aprécier.^^

    Donc j'ai fait des erreur d'écriture (notament le #include "stdio.h" qui est en fait #include <stdio.h>) mais le reel probleme se trouvait bel et bien dans le ' a la place du " car je ne comprenait pas la différence. Le livre explique très bien et ne doutez pas de son efficacité !!

    J'utilise Visual Studio 6.0 qui comprend un compilateur C++ mais qui fait aussi le C, pour repondre a ton interogation. ^^

    Merci de vos reponses et a la prochaine

  10. #10
    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
    J'utilise Visual Studio 6.0 qui comprend un compilateur C++ mais qui fait aussi le C, pour repondre a ton interogation.
    Ben oui, mais pour un programme en C, le fichier doit être en .c, sinon il sera compilé comme du C++ qui possède des incompatibilités avec le C (notamment au niveau de la conversion de void* en pointeur d'un autre type).
    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.

  11. #11
    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 king67
    J'utilise Visual Studio 6.0 qui comprend un compilateur C++ mais qui fait aussi le C, pour repondre a ton interogation. ^^
    Il fait du C si on prend les précautions décrites au-dessus. Sinon, c'est C++, comme tu l'as brillamment démontré.

    EDIT : Burned !

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4
    Par défaut
    D'accord merci

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

Discussions similaires

  1. Probleme avec les Chars SQL Server
    Par Nico820 dans le forum Développement
    Réponses: 2
    Dernier message: 30/12/2010, 16h33
  2. probleme avec les char
    Par PastorTroy dans le forum Débuter
    Réponses: 5
    Dernier message: 12/01/2009, 18h46
  3. char* => CString probleme avec les accents
    Par kacedda dans le forum MFC
    Réponses: 2
    Dernier message: 26/06/2007, 15h40
  4. [TP] Problème avec les intervalles de char
    Par Petrucci dans le forum Turbo Pascal
    Réponses: 29
    Dernier message: 11/11/2006, 22h19
  5. probleme avec les processus
    Par saidi dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/02/2003, 00h18

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