Dúvidas EP3 - Perguntar aqui

Re: Dúvidas EP3 - Perguntar aqui

por Francisco Reverbel -
Número de respostas: 0
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