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

probleme avec la fonction sprintf sur pic18



  1. #1
    modelvincent

    probleme avec la fonction sprintf sur pic18


    ------

    Bonjour tous le monde...

    Dans le cadre d'un projet de stage, j'ai besoin de faire appel a la fonction sprintf mais a l'interieur d'une autre fonction, je m'explique, la fonction sprintf permet de formatter directement une chaine de caractere et la place dans un buffer, aucun soucis dans son fonctionnement elle marche comme je l'attends, mais mon probleme est que je voudrai creer une fonction nommée printSD dont les parametres d'entrée serai en gros les meme que la fonction sprintf sauf que je ferai appel a la fonction sprintf a l'interieur de ma fonction printSD.

    En clair: l'entete de la fonction sprintf c'est: int sprintf( char *buffer, const char *format, ... ); et moi je voudrai creer une fonction PrintSD ou je puisse faire passer les parametres de sprintf pour y faire appel a l'interieur de ma propre fonction.

    Ca peut ne pas paraitre tres utile mais moi ca me sauverai la vie

    La finalité c'est que je voudrai envoyer la chaine sur une carte SD, donc l'utilisateur ecrirai la fonction printSD avec les meme parametres que pour sprintf plus quelques autres parametres et que ma fonction s'occupent d'elle meme de d'utiliser sprintf puis d'envoyer tt ca correctement.

    Je n'ai pas l'intention de refaire totalement la fonction sprintf et cela ne m'avancerai pas car je developpe une librairie qui dois pouvoir etre transportable pour ainsi dire sans modif d'un pic18 a un pic30 donc je voudrai me baser sur les fonctions standards a tous les micro...

    J'ai essayé différents en tete, j'arrive a écrire un texte constant mais impossible de faire passer les variables par ma fonction, quelqu'un aurai t'il une solution pour ce genre d'application un peu bizarre?

    Merci d'avance

    -----

  2. Publicité
  3. #2
    Jack
    Modérateur

    Re : probleme avec la fonction sprintf sur pic18

    Commence par montrer ce que tu as écrit (appel et corps de la fonction), ce sera plus simple.

    De plus, le type de compilateur peut être utile également.

    A+

  4. #3
    modelvincent

    Re : probleme avec la fonction sprintf sur pic18

    Finalement c'est bon j'ai reussi a faire passer ma fonction, j'ai en partie recopié la fonction sprintf et ca marche, voici mon code:

    void printSD(typFichier *Fichier, auto const MEM_MODEL rom char *fmt, ...)
    {
    /*****************************/
    /* Fonction de formatage */
    /* de la */
    /* Chaine */
    /*****************************/

    va_list ap;
    va_start (ap, fmt);
    vfprintf ((FILE *) & buf, fmt, ap);
    va_end (ap);
    *buf = '\0';




    ....

    }

    Ainsi Je peux choisir le fichier ou ecrire et y inscrire la chaine tout comme le faisait la fonction sprintf.


    Maintenant j'ai un autre soucis certainement tres bete mais qui me bloque depuis hier:

    Je voudrai pouvoir Modifier une variable sans forcement changer une a une toutes ses valeurs:

    Par exemple faire un truc du style :
    unsigned char nom[];

    nom="Fichier1.txt"
    CreerFichier(nom);
    nom="AutreNom.txt"
    CreerFichier(nom)


    Ma fonction creerFichier existe deja, elle attends un pointeur vers un char contenant le nom de fichier, si je rempli nom[] au moment de sa création pas de soucis ca marche, mais je sais aussi que nom="Fichier1.txt" n'est pas autorisé en C, j'ai donc essayé avec le strcpy(nom,"Fichier1.txt") et ca ne marche pas, en revanche si je crée une autre variable tel que ceci:

    unsigned char nom[];
    unsigned char buffer[]="fichier1.txt";

    strcpy(nom,buffer);
    CreerFichier(nom);

    alors la ca marche...

    La fonction strcpy ne pourrai donc pas copier directement une chaine de caractere?

    Y'a t'il une autre méthode pour remplir une variable avec une chaine de caractere que l'on lui remplirai directement?

    @+

    Vincent

  5. #4
    Jack
    Modérateur

    Re : probleme avec la fonction sprintf sur pic18

    il y a un problème: quand tu écris
    unsigned char nom[];

    aucune place n'est réservée pour stocker la chaine. nom n'est donc qu'un pointeur qui n'est pas initialisé.

    A+

  6. A voir en vidéo sur Futura

Discussions similaires

  1. problème avec la fonction NB.SI d'excel
    Par haile dans le forum Logiciel - Software - Open Source
    Réponses: 17
    Dernier message: 13/12/2017, 11h53
  2. Probleme utilisation sprintf() mcc18
    Par gillg02 dans le forum Électronique
    Réponses: 1
    Dernier message: 19/02/2012, 19h18
  3. probleme avec une fonction
    Par hammou dans le forum Mathématiques du supérieur
    Réponses: 14
    Dernier message: 17/08/2007, 12h14
  4. Un problème avec la fonction 1/(x²+1)
    Par jdh dans le forum Mathématiques du supérieur
    Réponses: 20
    Dernier message: 05/11/2006, 19h51
  5. Problème avec fonction Arc etc...
    Par Crono_post dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 10/10/2004, 12h59
Découvrez nos comparatifs produits sur l'informatique et les technologies.