Olá Artur,
Com o gcc o warning que aparece é este:
$ gcc -ansi -pedantic -O2 -Wall -o ep3-6567511 ep3-6567511.c
ep3-6567511.c: In function ‘main’:
ep3-6567511.c:144: warning: ISO C90 forbids mixed declarations and code
Esse warning indica que pela linha 144 do seu programa há declarações misturadas com código executável. De fato, as linhas 144 e 145 são
int fclose(FILE *entrada);
int fclose(FILE *saida);
Embora sua intenção fosse fazer duas chamadas à função fclose, essas linhas não são chamadas de função! Elas são declarações (protótipos) da função fclose. Como em C as declarações têm que aparecer antes do código executável, o compilador gerou o warning. Para chamar fclose, essas linhas deveriam ser assim:
fclose(entrada);
fclose(saida);
Seria ainda melhor (porém não obrigatório) verificar o valor devolvido por fclose, como o Rodrigo explicou:
if (fclose(entrada) != 0)
printf("Erro no fechamento do arquivo de entrada\n");
if (fclose(saida) != 0)
printf("Erro no fechamendo do arquivo de saida\n");
Eu também não sei porque o DevC++ não deu warning. Não estou com o DevC++ agora, senão faria um teste.
Reverbel
Forum