Como imprimir em stdout e arquivo em C
Eu li este tópico, mas o problema dele talvez seja diferente do meuEscrevendo para stdout e um arquivo
Eu quero escrever uma função, essa função precisa imprimir em stdout e em um arquivo. Meu programa C obtém a entrada do usuário por scanf.
Pretendo escrever uma função como printf, mas não sei como:
Eu tentei isso, mas ele só pode funcionar com uma string "pura", não pode converter% d,%. * Lf (minha função de impressão precisa apenas de duas conversões)
void dupPrint(FILE *fp,char *string)
{
printf("%s",string);
fprintf(fp,"%s",string);
return;
}
Tentei o dup2 e o freopen, mas eles não funcionaram para mi
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int main()
{
int i;
int file = open("input3.txt", O_APPEND | O_WRONLY);
if(file < 0) return 1;
if(dup2(file,1) < 0) return 1;
printf("Redirect to file!\n");
printf("enter i : ");
scanf("%d",&i);
return 0;
}
Este tutorial do dup2 () é impresso apenas em arquiv
Eu também tentei tee, mas pode não funcionar porque tenho que receber informações do usuário (se funcionar, não é "justo" porque tee não está no meu programa
Acho que implementar um problema semelhante ao printf resolveu o problema, mas não sei como converter. * Lf (imprima em dobro com precisão de inserção do usuário)
#include <stdio.h>
#include <stdarg.h>
void dupPrint(FILE *fp,char *fmt, ...)
{
va_list ap;
char *p, *sval;
int ival;
double dval;
va_start (ap, fmt); //make ap point to 1st unnamed arg
for(p = fmt; *p; p++)
{
if (*p != '%') {
putchar(*p);
continue;
}
switch (*++p) {
case 'd':
ival = va_arg(ap, int);
printf("%d", ival);
break;
case '.*lf' //?????
}
}
}
lguém pode sugerir uma solução para o meu problem