Jump to content
markusmetal

Dúvida ao usar fprintf para escrita em ficheiro

Recommended Posts

markusmetal

Boas

Ando a fazer um programa em que o resultado do mesmo tem que aparecer no ecrã quando se faz debug e ao mesmo tempo guardar num ficheiro que vai ser criado caso não exista.

Estou então a usar este programa exemplo para testar e explicar melhor a minha dúvida:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
FILE * xyz;


xyz = fopen("exemplo.txt","a");
fprintf(xyz,"12345\n");
fclose(xyz);

xyz = fopen("exemplo.txt","a");
fprintf(xyz,"67890\n");
fclose(xyz);

system("pause");
}

Não é suposto aparecer o 12345 e o 67890 no ecrã do debug? Sempre fiquei com a ideia que fazia isso mas também guardava no ficheiro  ;)

Quando corro o programa não aparece nada e termina. Sabem de algum tipo de solução em que escreva no ficheiro e no ecrã ou mesmo tempo? Ou estou a fazer aqui alguma coisa mal?

Cumprimentos

Share this post


Link to post
Share on other sites
KTachyon

Não. O fprintf() apenas escreve para o ficheiro. Para imprimires para o ecrã, usa printf(). Para fazeres as duas em simultâneo, podes criar uma função e chamá-la:

void printAndDisplay(FILE *stream, const char *txt) {
    fprintf(stream, txt);
    printf(txt);
}

E no main chamas esta função em vez do fprintf(). Lembra-te de colocar a função antes do main (ou então, coloca a declaração desta função antes do main).


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
Localhost

Claro que também podes escrever para o ecrã utilizando a função fprintf mas terias que pôr no primeiro argumento o stdout.

fprintf (stdout, "Hello world \n");


here since 2009

Share this post


Link to post
Share on other sites
markusmetal

mas terias que pôr no primeiro argumento o stdout.

fprintf (stdout, "Hello world \n");

Como assim o primeiro no primeiro argumento meter o stdout?

Tipo isto?

fprintf (stdout, "Hello world \n");

fprintf (xyz, "Hello world \n");

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.