Afficher un printf ou lire le buffer

wallie0703 Messages postés 59 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 29 juillet 2008 - 30 juin 2008 à 10:42
wallie0703 Messages postés 59 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 29 juillet 2008 - 3 juil. 2008 à 10:38
Bonjour,
J'ai un printf dans mon code et je voudrais savoir ou et comment je peux le lire avec Visual C++ 2008?
Bien à vous...
A voir également:

17 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
30 juin 2008 à 10:49
Salut,
Qu'entends tu par lire un printf ?
Un printf ecrit tout simplement dans un flux, qui par défaut correspond à la console.

Shell
0
wallie0703 Messages postés 59 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 29 juillet 2008
30 juin 2008 à 10:56
Voici mon code et je travaille sous Visual C++ 2008



#ifdef WIN32
   #include <windows.h>
   #define snprintf _snprintf
#endif

#include "PI_GCS.h"
#include <string>
#include <math.h>
#include "../../MMDevice/ModuleInterface.h"
#pragma comment(lib, "C843_GCS_DLL.lib")

#include <sstream>
//#using <C843_GCS_DLL.dll>

const char* g_PI_ZStageDeviceName = "PIZStage";
const char* g_PI_ZStageAxisName = "Axis";
using namespace std;
char buffer[1000];
//memset(buffer, 0, 1000);
int ID = C843_Connect(1);
///////////////////////////////////////////////////////////////////////////////
// Exported MMDevice API
///////////////////////////////////////////////////////////////////////////////
MODULE_API void InitializeModuleData()
{
   AddAvailableDeviceName(g_PI_ZStageDeviceName, "PI GCS Z-stage PCI");
   //BOOL _stdcall C843_qIDN();
   //int ID = C843_Connect(1)
   //char buffer[1000];
   memset(buffer, 0, 1000);
   C843_qIDN(ID, buffer, 999);
   printf(buffer);
}





Bien à vous...
0
wallie0703 Messages postés 59 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 29 juillet 2008
30 juin 2008 à 10:56
Je veux voir ce qu'il renvoit.

Bien à vous...
0
wallie0703 Messages postés 59 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 29 juillet 2008
30 juin 2008 à 10:57
y a rien sur ma console qui s'affiche quand je le génère

Bien à vous...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Benjam18 Messages postés 13 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 30 juin 2008
30 juin 2008 à 13:52
Si il n'y a rien de bloquant derriere et que ton programme se finit, c'est que tu n'a pas le temp de voir ce qui s'affiche, met une instruction bloquante apres, comme getch(), cin>>(c++), ...

Benjamin
0
wallie0703 Messages postés 59 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 29 juillet 2008
30 juin 2008 à 14:06
je comprend pas comment marche visual c++, est ce que c'est quand je génère que ça s'affiche dans la console ou faut il débuger??

Bien à vous...
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
30 juin 2008 à 17:12
ça s'affiche dans la console, mais comme dit Ben si rien ne bloque la console disparaît aussitôt le programme terminé.
Pour éviter cela, suffit de faire Ctrl+F5 pour exécuter sans debug (ça peut te servir à voir le résultat au moins).
Sinon, est-tu sûr que buffer est rempli correctement? Parce que s'il n'est pas rempli, comme auparavant buffer[0]=0 (avec le memset), printf n'affichera rien.
0
BastienL21 Messages postés 172 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 12 février 2009 2
30 juin 2008 à 19:29
Bonjour à tous,
      Je ne pense pas que ça vienne de ça sinon quelqu'un l'aurais déjà remarqué mais parfois ce sont les erreurs le plus bête qu'on ne voit pas...bref...Dans la dernière ligne tu a printf(buffer); or il me semble (mais je n'ai pas vérifié) que cette syntaxe ne fonctionne pas mais qu'il faut mettre printf("%s", buffer);
Et je  te dirais comme Benjam, qu'il faudrais mettre un getch(); après.

Cordialement, B@stien.//@++
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
30 juin 2008 à 20:52
"Dans la dernière ligne tu a printf(buffer); or il me semble (mais je n'ai pas vérifié) que cette syntaxe ne fonctionne pas mais qu'il faut mettre printf("%s", buffer);"

printf("Bonjour"); // fonctionne

char buffer[] = "Bonjour";
printf(buffer); // fonctionne aussi

et logiquement, je ne vois pas pourquoi ça ne pourrait pas fonctionner.

C++ (@++)
0
wallie0703 Messages postés 59 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 29 juillet 2008
1 juil. 2008 à 10:28
Qu'est ce qu'il faut rajouter dans les include pour que le getch marche??

Pour déboguer une DLL faut utiliser quoi comme exécutable??

Bien à vous...
0
BastienL21 Messages postés 172 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 12 février 2009 2
1 juil. 2008 à 12:30
Slt,
   Désolé il me semblait que printf(buffer); ne fonctionnait pas...on fait tous des erreurs.
En ce qui concerne le getch();, c'est dans conio.h.

Cordialement, B@stien.//@++
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
1 juil. 2008 à 13:16
Bonjour,

printf(buffer) fonctionne, même s'il y a des séquences de formatages (%s par exemple) dans buffer, par contre, dans ce cas là, comme il n'y a pas de variable(s) associée(s) ça va afficher n'importe quoi !

Jean-François
0
wallie0703 Messages postés 59 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 29 juillet 2008
1 juil. 2008 à 15:34
Merci , pas de problème pour les erreurs..
En fait j'ai ça :
The C843_qIDN() has three
parameters: ID (you get this from C843_Connect()), a buffer
to be filled with the response, a variable with the length
of the buffer).
Comment fait on pour rentrer la réponse dans le buffer??
Je sais si c'est compréhensible
Bien à vous...
0
wallie0703 Messages postés 59 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 29 juillet 2008
1 juil. 2008 à 15:35
Voici la partie de mon code :

MODULE_API void InitializeModuleData()
{
   AddAvailableDeviceName(g_PI_ZStageDeviceName, "PI GCS Z-stage PCI");
   int ID = C843_Connect(1);
   char buffer[1000];
   memset(buffer, 0, 1000);
   C843_qIDN(ID, buffer, 999);
   printf(buffer);

}

Bien à vous...
0
wallie0703 Messages postés 59 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 29 juillet 2008
1 juil. 2008 à 15:37
BOOL C843_FUNC_DECL C843_qIDN (const int iId, char *const buffer, const int maxlen)

Bien à vous...
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
1 juil. 2008 à 15:46
Si c'est pour formater des données dans buffer alors il faut utiliser sprintf(buffer,format,variables). Ca s'utilise comme printf() mais le résultat du formatage va dans la chaîne de caractères passée en premier paramètre et non sur la console.

Ex: sprintf(buffer,"ID=%d",ID);

Jean-François
0
wallie0703 Messages postés 59 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 29 juillet 2008
3 juil. 2008 à 10:38
Merci les gens...En fait fallait que j'utilise une application un .exe!!

Bien à vous...
0
Rejoignez-nous