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 :

fonction printf


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 5
    Points : 3
    Points
    3
    Par défaut fonction printf
    bonjour,

    est-ce que quelqu'un pourrait me dire où je pourrais trouver le code de la fonction printf :
    je dois coder une fonction analogue et celà me faciliterai énormément la vie

    merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 35
    Points : 42
    Points
    42
    Par défaut
    printf c'est dans stdio.h ... edite ce fichier et tu auras le code ...
    Karuto
    MCSA, MSCE (Win2K), MCDBA (SQL 2K)

  3. #3
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 137
    Points : 621
    Points
    621
    Par défaut
    le seul problème est que ces fonctions sont en assembleur, optimisées à fond et que les fichiers .h fournis avec les compilateurs sont plutôt illisibles.
    d'ailleurs, ces fonctions sont précompilées en général

  4. #4
    Candidat au Club
    Inscrit en
    Avril 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    donc si je comprends bien, il va falloir que je me rapaluche à la main toute la fonction

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Tu a besoin de koi exactement par rapport a la fonction printf ?

    => le fait d'avoir une liste variable de param (list args ??? je crois)
    => le fait d'envoyer une chaine de caractère formatté (selon différents type de données) sur stdout
    ?
    :
    _*----|OtAkU|----*_

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    bon, je vais essayer d'être clair (c'est assez capilotracté !!)

    il faut que j'écrive un simulateur d'un micro qui est programmé en C.
    dans le code du programme que je dois simuler, il y a des printf qui affichent des messages sur un écran (logique)

    les printfs permettent d'utiliser aussi des caractères de controles (\n \t...) et des remplaçements de variables (%d %c...)

    ce que je veux faire, c'est récupérer la chaine de caractères générée par le printf, sans qu'il ait interprété les caractères de controles...

    un exemple sera plus simple je pense

    j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    i = 15;
    printf("\ni = %d\n", i);
    je veux récupérer comme chaine dans une variable
    voila, le problème.

    pour le résoudre je pense à la solution suivante

    - dérouter systématiquement le printf vers une autre fonction par un define
    #define printf PRINTF
    - dans ce PRINTF, transformer la chaine à formatter "\ni = %d\n" en "\\ni = %d\\n"
    - exécuter un fprintf vers un fichier avec la nouvelle chaine formatté
    - récupérer la chaine dans le fichier
    - et virer les éventuels \\ (je ne sais pas s'ils seront doublés à l'écriture ??)

    je pense que c'est bien compliqué, mais pour l'instant je n'ai rien d'autre...
    donc si vous avez des idées, elles sont les bienvenues.
    merci

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    J'ai deja fait un truc dans le genre...


    voila ce que je te 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    #include <stdio.h>	// pour printf()
    #include <ctype.h>	// pour iscntrl()
    #include <stdarg.h>	// pour va_start(), va_end(), va_list ,...
     
    /*----------------------------------------------*/
    /* Effectue un printf normal sur stdout		*/
    /* puis recopie la chaine dans le fichier en	*/
    /* parametre (sans les caracteres de controle)	*/
    /*----------------------------------------------*/
    int myPrintf (FILE* output, char *format ,...)
    {
    	va_list	liste;
    	char	*new_format;
    	int i,j;
    	int size;
     
    	size = strlen(format);
    	// On compte le nombre de caractere de controle
    	for (size=0, i=size; i>=0; i--)
    		if (iscntrl(format[i]))
    			size++;
    	size +1; // '\0'
     
    	// On alloue le nouveau format
    	new_format = (char*) malloc (sizeof(char) * size);
     
    	// On recopie la chaine en modifiant les controles
    	for (i=0, j=0; i<strlen(format); i++,j++)
    	{
    		switch (format[i])
    		{
    		case '\n':
    			new_format[j++] = '\\';
    			new_format[j] = 'n';
    			break;
    		case '\t':
    			new_format[j++] = '\\';
    			new_format[j] = 't';
    			break;
    		/* etc... pour les autres controles */
     
    		default: /* ici on gere tous les autres caracteres */
    			new_format[j] = format[i];
    		}
    	}
    	new_format[j] = '\0';
     
    	// On alloue la chaine qui contiendra le resultat
    	size = strlen(new_format)+1;
     
     
    	va_start(liste,format); // on charge la liste d'arguments
     
    	/*- on ecrit dans le fichier avec la nouvelle chaine -*/
    	vfprintf (output, new_format, liste);
     
    	/*- on ecrit sur stdout avec la chaine normal -*/
    	size = vprintf (format, liste);
     
    	va_end(liste);	// on referme la liste d'arguments
     
    	free (new_format);
    	return size;
    }
     
    main ()
    {
    	myPrintf (stdout, "\ni = %d\n", 15);
    }

    normalement ca devrait marcher

    Si tu as du mal avec le C hésite pas à lire les tutoriels et cours de formation pour apprendre la programmation en langage C : http://c.developpez.com/cours/

  8. #8
    Candidat au Club
    Inscrit en
    Avril 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    super je te remercie
    le code que tu m'as donné est exactement ce dont j'avais besoin

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

Discussions similaires

  1. Modifier la fonction printf de bcb
    Par yozart dans le forum C++Builder
    Réponses: 0
    Dernier message: 24/10/2008, 11h45
  2. la fonction printf démystifiée
    Par saad.hessane dans le forum C
    Réponses: 22
    Dernier message: 10/07/2008, 14h22
  3. [MASM32] Comment utiliser la fonction printf
    Par _Michel dans le forum x86 32-bits / 64-bits
    Réponses: 26
    Dernier message: 08/11/2007, 11h09
  4. Fonction printf personnalisee
    Par Bob dans le forum C
    Réponses: 2
    Dernier message: 20/12/2003, 22h20

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