Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Chaines de caractères/passement de fonctions



  1. #1
    Martintin

    Chaines de caractères/passement de fonctions


    ------

    Bonjour,
    Merci tout d'abord à tous ceux qui m'ont aidé dans mes déboires avec le pic18f, petit à petit mon projet commence à prendre forme..
    Je suis maintenant confronté à un problème de déclaration de chaine de caractères.
    Je vais essayer d'ètre clair:
    Mon programme main envoie une chaine de caractère à un sous_programme qui envoie caractère par caractère la phrase sur le port série.
    Mon problème se situe lors du passage de paramètres:
    J'aimerais pouvoir appeler mon prog tel que (print_str("coucou");).
    Seulement je suis pour l'instant obligé de faire:
    char Chaine[] = { "coucou" };
    print_str(Chaine);

    Voici mon programme print_str:

    void print_str(const char* Pointeur_caract) // écriture d'une chaine de caractère
    {
    while(*Pointeur_caract !=0)
    {
    printchar(*Pointeur_caract);
    //printchar est une fonction qui envoie un caractère sur le port série
    Pointeur_caract++;
    }
    }

    Pourriez vous m'aider à me sortir des déclarations (pointeurs, char*, tableau...) afin de pouvoir envoyer directement ma chaine sous la forme "..." au ssprogramme svp?
    Merci d'avance pour votre aide!
    Martin

    -----

  2. #2
    etienneh

    Re : Chaines de caractères/passement de fonctions

    Bonjour,

    Tu utilises un PIC, dont l'architecture est un peu différente de celle traditionnellement utilisée dans les ordinateurs.

    Dans un PIC, les données RAM et ROM ne partagent pas le même espace mémoire. Ce qui fait que, lorsque tes données sont stockées en ROM (par exemple dans "Hello World"), elles ne sont pas accessibles de la même manière que si elles sont stockées en RAM (par exemple dans char str[12] = "Hello World").

    Si tu veux que ta fonction secondaire puisse accepter des paramètres, transforme ta définition :

    void printstr(char*)

    doit devenir

    void printstr(rom char *)

    Mais attention ! ta fonction ne marchera plus avec des chaînes résidant en RAM !

    Tout est expliqué en détail dans la doc du compilateur C18 sur www.microchip.com

    Amicalement,
    E.

  3. #3
    Martintin

    Re : Chaines de caractères/passement de fonctions

    Super!
    C'est pile ce qu'il me fallait et j'était loin de m'en douter!
    Merci beaucoup pour ton aide, bonne soirée et à bientot!
    Martin

  4. #4
    etienneh

    Re : Chaines de caractères/passement de fonctions

    Mais de rien... c'est un plaisir

Sur le même thème :

Discussions similaires

  1. Analyse de chaines de caracteres (VB ?)
    Par JLB29 dans le forum Logiciel - Software - Open Source
    Réponses: 11
    Dernier message: 13/10/2007, 11h13
Découvrez nos comparatifs produits sur l'informatique et les technologies.