Jump to content

problema na escrita de ficheiros


MagicCell

Recommended Posts

ola a todos 🙂

tou aqui com um problema  🙂

tou a tentar fazer o pacman em C  B)

ja fiz o "design" se eh que se pode chamar assim, só me falta por o bixo a andar, mostar o ranking ordenado e escrever o maldito nome no ficheiro dos rankings -.-

eu tou a usar um ficheiro de texto para guardar os rankings, consigo ler, mas n consigo escrever o novo ranking...

eu tive C ha uns 2 anitos e estou a recomecar de novo agora e nao me lembro muito bem de algumas coisas...

aqui está o codigo que tinha escrito:

void jogar()
{

clrscr();
gotoxy(25,10);
fflush(stdin);
printf("Nome: ");
gets(nome);
sleep(1);
tabuleiro();

f=fopen("c:\\ranking.txt","a");
if (f==NULL)
{
  printf("Erro na Abertura do Ficheiro \"ranking.txt\"");
  exit(1);
}

while (feof(f)==0)
{
  fprintf(f, "%d %s %s", pontos, nome, data);
}
fclose(f);
sleep(1);
clrscr();
}

--> eu para escrever, abri o ficheiro usando o "w", mas depois ele apagava o ficheiro e escrevia so aquela parte porque o "w" escreve apartir do inicio do ficheiro, e vi na net o append "a", que não me lembro mesmo de ter dado isso, e então não consigo escrever no ficheiro...

--> tambem quando estive a pesquisar, nao vi nenhum codigo que use o feof para ler e escrever em ficheiros, costumam usar o fgets [gostava que me dissessem como sff  😕 ]

eh verdade, como podem ver pelo código, estou a usar no windows  😛

(se postei a duvida no lugar errado, desculpem e digam onde é)  ?

Obrigado  👍

Link to comment
Share on other sites

O problema está no uso do feof.

Após uma consulta rápida ao manual do fopen:

      a      Open for appending (writing at end of file).  The file  is  cre‐

              ated  if it does not exist.  The stream is positioned at the end

              of the file.

Quando abres um ficheiro em modo de append, o ponteiro do ficheiro é colocado no final do ficheiro, logo o teu while nunca chega a ser executado, pois a condição é sempre falsa.

<3 life

Link to comment
Share on other sites

por isso eh que eu perguntei como usar o fgets ou entao outra maneira para o fazer 🙂

Podes ver um exemplo de como funciona aqui:

http://www.portugal-a-programar.pt/index.php?showtopic=4655

Pessoalmente não vou muito à pala com fprintf's e afins, prefiro usar o fgets/fputs para ler/escrever em ficheiros de texto.

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
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.