9
votes

freopen stdout et console

Compte tenu de la fonction suivante:

freopen("file.txt","w",stdout);


5 commentaires

Avez-vous essayé certains de ceux qui ont posté sur ici ? Comment ont-ils échoué? (BTW, Freopen est POSIX et disponible sous Windows. Windows a un support POSIX.)


@MAT: C'étaient pour un système POSIX, conformément à la question, Windows est utilisé ici. Si le support de POSIX, vous devrez clarifier ce que (fonctions) qu'elle soutient en relation.


Freopen - Regardez les liens sur la gauche. Je n'ai rien à clarifier quoi que ce soit. Vous postez une question avec un appel de fonction valide sur Windows et des questions similaires utilisent également des API disponibles sur Windows. (Celui qui doit faire la recherche est vous-même - vous êtes celui coincé avec le problème.)


Vous devrez Pas vraiment @ Tapis, sinon quelqu'un d'autre n'a pas besoin de, personne n'est payé pour vous aider vous ici. Au moins montrer une petite gratitude au lieu de exigeant envers ceux qui vous aident.


@Als: Je ne connais pas le système. Si je savais ce que fait et ne fonctionnait pas, je ne poserais pas une question à ce sujet. Il devra me montrer parce que je ne me saurai pas moi-même.


3 Réponses :


18
votes

Vous devriez être capable d'utiliser < Code> _dup pour faire cela

Quelque chose comme ça devrait fonctionner (ou vous préférerez peut-être l'exemple répertorié dans la documentation _dup Xxx


0 commentaires


4
votes

Après avoir posté la réponse, j'ai remarqué qu'il s'agit d'une question spécifique à Windows. Le ci-dessous pourrait toujours être utile dans le contexte de la question à d'autres personnes. Windows fournit également _FDOPEN, de sorte que MAIBLE change simplement la modification de 0 sur une poignée appropriée modifierait cette solution Linux à Windows.

stdout = fdopen (0, "W") p>

#include <stdio.h>
#include <stdlib.h>
int main()
{
    freopen("file.txt","w",stdout);
    printf("dupa1");
    fclose(stdout);
    stdout = fdopen(0, "w");
    printf("dupa2");
    return 0;
}


2 commentaires

Fdopen est valide. DUP et DUP2 ne sont pas, et sont appelés _dup et _dup2 dans Windows à la place de Hasturkun. Suscité pour effort. (Ignorer ce que j'ai dit sur l'erreur du compilateur ... ma propre faute).


Je vais taper sur ce stdout = fdopen (0, "w"); Résultats dans l'erreur suivante: LValue requise comme opérande gauche de la mission