Dúvida sobre comparar dois arquivos pelo tamanho em bytes [RESOLVIDO]

1. Dúvida sobre comparar dois arquivos pelo tamanho em bytes [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 17/09/2010 - 19:15h

Fala rapaziada! O que ocorre é o seguinte:

Eu preciso fazer um programa que compare dois arquivos em bytes e informe o arquivo maior. Molezinha, consegui pegar o tamanho de 2 arquivos, o problema está em comparar, já que ambos tamanhos estão na mesma variável, porém em blocos diferentes. Segue o código:

http://codepad.org/V6qNCIOg


Grato.


  


2. MELHOR RESPOSTA

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 17/09/2010 - 21:42h

Cara ficaria melhor você criar uma função para "contar" a quantidade de bytes do arquivo apenas usando o caminho completo dele, assim:

long int SizeFile(const char *filename) {
... // resto do código
}

"void firstFile(){
void secondFile(){"
As duas funções que criou estavam fazendo a mesma coisa, por isso é indicado generalizar numa função só.
Tome cuidado também para não retornar nenhum valor numa função "void" e não esqueça de fechar os arquivos quando não precisar mais deles.

long int SizeFile(const char *filename){
FILE *arquivo;
long int tamanho;

arquivo = fopen(filename, "r");
if (arquivo != NULL) {
fseek(arquivo, 0, SEEK_END);
tamanho = ftell(arquivo);

printf("O arquivo %s possui %ld bytes\n\n",
filename, tamanho);

// Fechar o arquivo arberto
fclose(arquivo);
return tamanho;

}

printf("Arquivo inexistente");

return 0;
}


"int main(long tamanho1, long tamanho2)"
main() deve tem no máximo 3 argumentos, se não me engano, que são um inteiro (argc), um ponteiro para ponteiro (**argv) e outro **env, esse último são as váriaveis de ambiente.





3. Re: Dúvida sobre comparar dois arquivos pelo tamanho em bytes [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 17/09/2010 - 19:19h

No bloco main() eu tentei adicionar alguns parâmetros e adicionar um if(), porém não obtive sucesso.

int main(long tamanho1, long tamanho2) {

firstFile();
secondFile();

if(tamanho1 > tamanho2){
printf("O arquivo '2.txt' e o maior!\n\n ");
} else {
printf("O arquivo BAIXAR.txt e o maior! \n\n");
}



}



4. Re: Dúvida sobre comparar dois arquivos pelo tamanho em bytes [RESOLVIDO]

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 17/09/2010 - 21:44h

é só vc colocar

int funcao1() {

return tamanho;
}

int funcao2() {

return tamanho;
}

main(){

if(funcao1()>funcao2())
printf("primeiro maior");
else
printf("segunda maior");
}



5. Re: Dúvida sobre comparar dois arquivos pelo tamanho em bytes [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 18/09/2010 - 09:47h

Valeu Sam; Agora consegui.


6. Re: Dúvida sobre comparar dois arquivos pelo tamanho em bytes [RESOLVIDO]

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 19/09/2010 - 03:26h

Cara, já vi que foi marcado como resolvido, mas....

Você pode usar stat().

int compara ( const char *file1, const char *file2 )
{
struct stat f1, f2;

stat ( file1, &f1 );
stat ( file2, &f2 );

return ( f1.st_size - f2.st_size );

}

Essa função retorna 0 se os arquivos forem do mesmo tamanho, um numero positivo caso o arquivo 1 seja maior e um numero negativo caso o arquivo 2 seja maior.

O codigo inteiro e com checagem de erros:
http://codepad.org/bq7QxUiZ

Espero ter ajudado,
Enzo Ferber
[]'s




7. Re: Dúvida sobre comparar dois arquivos pelo tamanho em bytes [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 19/09/2010 - 10:25h

Valeu Enzo :)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts