Tom's Guide > Forum > Programmation > desactiver Standard I/O en C

desactiver Standard I/O en C

Forum Programmation : desactiver Standard I/O en C

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour à tous,

Je développe des programmes, qui utilisent des DLL contenant des affichages sur fenetre standard I/O (des "printf" quoi :D ).

Certains logiciels doivent permettre d'afficher ces messages, d'autres non (selon les droits de l'utilisateur en gros)
Vu que ces DLL doivent etre communes aux différentes versions, impossible de supprimer les printf et de faire des DLL personnalisées selon l'utilisateur


est il possible d'activer / désactiver le standard I/O dans le module principal du logiciel?
au pire, est il possible de rediriger le flux vers un fichier par exemple plutot que de l'afficher à l'ecran (fichier qui ne sera pas accessible a l'utilisateur lambda, et qui sera effacé)

Merci de vos réponses

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Tu peux redéfinir les iostreams pour les diriger là où bon te semble, non ?

------------------------------ Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire.
Voltaire
Répondre à Optionnelle

Merci 'Optionelle'

C'est possible, mais je ne sais pas de quelle façon faire ça...
Si tu as une piste ou un exemple a portée de main, je t'en serais tres reconnaissant ;)

Merci par avance

Répondre à BrianBB

De mémoire (c'est très loin le c) :

Code :
  1. freopen( "file.txt", "w", stdout );

------------------------------ Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire.
Voltaire
Répondre à Optionnelle

La doc msdn donne ça :

Code :
  1. // Compile options needed: none
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. void main(void)
  5. {
  6.   FILE *stream ;
  7.   if((stream = freopen("file.txt", "w", stdout)) == NULL)
  8.       exit(-1);
  9.   printf("this is stdout output\n" );
  10.   stream = freopen("CON", "w", stdout);
  11.   printf("And now back to the console once again\n" );
  12. }

------------------------------ Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire.
Voltaire
Répondre à Optionnelle

Les dll vont s'écécuter dans le contexte du processus principal, donc, une fois la sortie standard redéfinie, tous les printf se feront dans le fichier.
Tu pourrais même essayer vers un fichier null si tu ne veux pas écrire dans un fichier physique (a tester).

------------------------------ Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire.
Voltaire
Répondre à Optionnelle

Je te remercie, je vais tester ça immédiatement...
si ça marche, tu me sauves la mise! :D

Répondre à BrianBB

alors, j'aime les diamants, les fleurs, les voyages...

------------------------------ Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire.
Voltaire
Répondre à Optionnelle

Ouf... heureusement que ça ne marche pas alors :D
serieusement ça doit pas etre loin, c'est juste que pour lui remettre la possibilité d'ecrire sur le standard IO (en gros la ligne "stream = freopen("CON", "w", stdout);" ) qui ne fonctionne pas...
mais a la rigueur, c'est pas grave ça puisque je ne serais jamais dans le cas ou il faut la remettre ;)

Donc tu as bien mérité ta récompense :D
http://www.diamant-gems.com/french/images/ft.gif

http://www.uvm.edu/~hag/presentati [...] em-red.jpg

http://www.vacance-club.com/images [...] middle.jpg

Répondre à BrianBB

:love: J'ai droit aux 3 en plus !
J'aurais dû demander plus de cadeaux...

------------------------------ Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire.
Voltaire
Répondre à Optionnelle

Bah... quand je peux faire plaisir à une demoiselle moi... ;) :D

Merci beaucoup... tu me sauve la mise

Répondre à BrianBB
Tom's Guide > Forum > Programmation > desactiver Standard I/O en C
Aller à :

Il y a 2498 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens