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 :

Lire le mot dans une fonction


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut Lire le mot dans une fonction
    Bonjour , je travaille sur un afficheur LCD , mon but est de créé ma fonction qui me permette d'écrire

    affich("message");

    et la fonction , fait :

    lettre("m");
    lettre("e");.....................

    Comme sa je ferai une table avec tout les chiffre et lettre pour l'afficher .
    (puis la fonction pour aller a la ligne ... )

    Existe t'il une fonction en c permettant de séparer chaque lettre ( Je travaille sur un microcontroleur . )

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par paterson
    Existe t'il une fonction en c permettant de séparer chaque lettre
    Ouvre ton livre de C à 'chaine de caractères'... Visiblement, il y a des choses basiques que tu ignores...

  3. #3
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    merci , mon cours en c , n'est vraiment pas complet , il fait 16 pages avec exemple .

    je vais chercher dans les cours de developpez.com


    edit , s'est bon , j'ai compris , je comprend pourquoi ses grand yeux , en fait , s'est tout simple , mais falai l'avoir vu une fois ....

    Merci beaucoup pour m'avoir dit seulement ou trouver ...

  4. #4
    Membre averti
    Profil pro
    Ingénieur en électronique
    Inscrit en
    Septembre 2004
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur en électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 419
    Points : 333
    Points
    333
    Par défaut
    Tout fonctionne sur Dev-C++ , mais dés que j'utilise mon programateur pour les pic :

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    void test(char mess[])
         {
         int dd = mess[0];
         printf("%d",dd);
         }
     
    int main(int argc, char *argv[])
    {
    test("test");
      system("PAUSE");	
      return 0;
    }
    J'ai : 116 = t en ascii

    Mais quand je le place dans CCS C ( programateur Pour les pic en C )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void test(char mess[])
         {
         int dd = mess[0];//erreur :Expression must evalute to a constant
         printf("%d",dd);
         }
     
     
    void main()
       {
       test("test");// si j'enlève le contenu de test, Attempt to create a pointer to a constant. 
       while(1)// Nous sert a faire une boucle infinie , car le pic lit linéairement son programme si il n'as rien , il continues .... 
          {
          }
       }
    EDIT : je comprend rien :

    Pour que sa fonctionne :

    void test(char mess)
    {
    int dd = mess;//erreur :Expression must evalute to a constant
    printf("%d",dd);
    }

    A ne rien comprendre , donc résolu , merci a Emmanuel Delahaye pour m'avoir mis sur la piste .

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    La première erreur montre un compilo non-standard, incapable de gérer l'initialisation d'une variable non-statique par autre chose qu'une constante connue à la compilation. Sépare l'affectation de la déclaration et ça devrait marcher.

    La seconde erreur me rappelle le genre d'avertissement qu'on a avec GCC et l'option -Wwrite-strings : Rajoute un const dans le prototype de ta fonction test() et ça devrait marcher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void test(char const *mess)
    {
    int dd;
    dd = mess[0];
    printf("%d",dd);
    }

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par paterson
    Tout fonctionne sur Dev-C++ ,
    Euh, non.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums2\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:12: warning: function declaration isn't a prototype
    main.c:12: warning: return type of 'main' is not `int'
    main.c: In function `main':
    main.c:13: warning: passing arg 1 of `test' discards qualifiers from pointer target type
    Linking console executable: console.exe
    Process terminated with status 0 (0 minutes, 1 seconds)
    0 errors, 3 warnings
    http://emmanuel-delahaye.developpez....tm#cfg_compilo


    Mais quand je le place dans CCS C ( programateur Pour les pic en C )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void main()
       {
       test("test");// si j'enlève le contenu de test, Attempt to create a pointer to a constant. 
     
    /* -ed- normal. La chaine est définie dans une zone non modifiable. 
               Il est impératif de définir le parametre de test comme 
               char const param[] ou char const *param. 
     
               Ca devrait resoudre le deuxieme warning. 
    */
    Je propose

    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
     
    #include <stdio.h>
     
    void test (char const mess[])
    {
       int dd = mess[0];
       printf ("%d", dd);
    }
     
    int main (void)
    {
       test ("test");
     
       while (1)
       {
       }
       return 0;
    }
    Dis moi si ça passe avec CCS C.

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Médinoc
    La seconde erreur me rappelle le genre d'avertissement qu'on a avec GCC et l'option -Wwrite-strings : Rajoute un const dans le prototype de ta fonction test() et ça devrait marcher.
    Du coup, ça pourrait résoudre le premier warning...

    Mais oui, ça révèlerait une non-conformité, malheureusement fréquente en embarqué...

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    D'après le texte de l'erreur, ça ne résoudrait pas: C'est là la subtile différence entre "valeur non-modifiable" et "constante connue à la compilation"...

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Médinoc
    D'après le texte de l'erreur, ça ne résoudrait pas: C'est là la subtile différence entre "valeur non-modifiable" et "constante connue à la compilation"...
    Oui, mais je demande à voir quand même...

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

Discussions similaires

  1. Fonction pour lire des fichiers dans une archive MPQ
    Par MegaBigBoss dans le forum Débuter
    Réponses: 0
    Dernier message: 28/01/2012, 22h02
  2. Réponses: 2
    Dernier message: 12/10/2010, 09h35
  3. Réponses: 2
    Dernier message: 29/07/2010, 21h58
  4. Réponses: 10
    Dernier message: 30/07/2009, 13h08
  5. sizeof dans une fonction pour lire une chaine
    Par Haze. dans le forum Débuter
    Réponses: 11
    Dernier message: 06/11/2007, 12h07

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