Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

kvyil

Problema em mostrar valores de um array num ficheiro

Mensagens Recomendadas

kvyil    0
kvyil

Bom dia pessoal, o meu problema é simples, tenho um programa que gera um numero, o user tem de adivinhar esse numero e então as tentativas que ele usa para encontrar o numero são guardadas num ficheiro. no entanto eu queria gurdar esse array num ficheiro txt

e o meu problema é que não está a guardar de forma correcta. Não sei o que se passa :s

O programa que cria o ficheiro é o seguinte

void cria_ficheiro (int *aleatorio, int *quantidades, double *tempo, int *conta_a, int *conta_b, int* vector, int *num_b)
{
    FILE *fp;
    fp = fopen ("resultado.txt", "w");
    for (num_b = 0; num_b < *conta_a; num_b++){ //ciclo que mostra as tentativas do array

    fprintf (fp, "As tentativas foram: %d \n", *vector, num_b++);}
    fprintf (fp, "O numero aleaatorio foi: %d, as tentativas %d , e tempo foi %f \n", *aleatorio, *quantidades, *tempo);
    fclose (fp);//Fecha o ficheiro                 
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

Yikes!

Sugestão: aumenta o nivel de warnings do teu compilador e faz compilações limpas, sem erros nem warnings.

1. Para que é o conta_b?

2. o num_b é do tipo ponteiro para int; no ciclo for estas a comparar esse ponteiro com um inteiro --- de certeza que não é isso que queres (e o compilador pode-te ajudar a apanhar esses enganos com warnings)

3. sem alterações aos ponteiros, os valores *aleatorio, *quantidades, *tempo nunca mudam. Eu sugiro que em vez de ponteiros uses o formato de array: aleatorio[0]; aleatorio[1], ...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1125
HappyHippyHippo

fprintf (fp, "As tentativas foram: %d \n", *vector, num_b++);

apesar de de nao dizeres NADA sobre o que te aparece na ficheiro, parece ser isto

fprintf (fp, "As tentativas foram: %d \n", vector[num_b], num_b++);

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

fprintf (fp, "As tentativas foram: %d \n", vector[num_b], num_b++);

Isto pode dar mal: o uso de num_b para indexar o vector e a sua propria incrementação não são necessariamente sequenciais como está escrito no código da esquerda para a direita.

Além disso a string de formatação requer 1 parametro e a instrução especifica 2 parametros ...

Para evitar problemas com a sequencia de operações (e não deixar um parametro "pendurado") eu faria

fprintf(fp, "As tentativas foram: %d\n", vector[num_b++]);

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade