paulo1205
(usa Ubuntu)
Enviado em 05/11/2012 - 01:39h
Uma coisa importante me escapou anteriormente: você está abrindo o arquivo em modo de aposição (
append ). Nesse modo, você só tem acesso de escrita no arquivo, e todas as operações de escrita são efetuadas ao final do arquivo, mesmo que você tente instruir o contrário pode meio de
rewind () ou
fseek ().
Uma forma adequada de abrir um arquivo no qual você pode, alternadamente, escrever e ler é a seguinte.
/*
Tenta primeiro abrir para leitura preservando o conteúdo do arquivo ("r") e
permitindo TAMBÉM escrita ("+"). Se isso falhar, assume que o arquivo não
existe, e tenta criar um arquivo novo (vazio) para escrita ("w"), permitindo
TAMBÉM leitura ("+"). Se também isso falhar, desiste de abrir o arquivo,
indicando erro.
*/
if(
(fp=fopen(filename, "r+"))==NULL &&
(fp=fopen(filename, "w+"))==NULL
){
fprintf(stderr, "Não foi possível abrir o arquivo (codigo de erro %d).\n", errno);
exit(1);
}
Dependendo do programa, pode ser que faça sentido usar "a+" em lugar de "w+", permitindo leituras em qualquer posição do arquivo, embora todas as operações de escrita ocorram sempre em seu final.