nordi 1 Denunciar post Postado Julho 21, 2006 Codigo Extraido do site http://br.geocities.com/sdiasneto/c_int/arquivos.htm /* programa que copia arquivo */#include <stdio.h>int main(int argc, char *argv[]) { FILE *original,*copia; char caracter; if(argc < 3) { printf("\nSintaxe correta:\n\n"); printf("copiar ARQUIVO_ORIGEM ARQUIVO_DESTINO\n\n"); exit(1); } while(argv[1]) { if(*argv[1] != *argv[2]) break; printf("\nO nome do arquivo original não pode ser igual ao da\ cópia.\n\n"); exit(1); }; if((original = fopen(argv[1],"rb")) == NULL) { printf("\nErro ao abrir o arquivo original.\n\n"); exit(1); } if((copia = fopen(argv[2],"wb")) == NULL) { printf("\nErro ao abrir o arquivo cópia.\n\n"); exit(1); } while(!feof(original)) { caracter = getc(original); if(!feof(original)) putc(caracter,copia); } fclose(original); fclose(copia); printf("\n%s copiado com sucesso com o nome de %s.\n\n",argv[1],argv[2]); return(0); }At+ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
automouse 0 Denunciar post Postado Julho 23, 2006 Valeu amigo, não querendo abusar de sua boa vontade, poderia me passar como chamar a função? e para que serve a função putc?Desde já obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
nordi 1 Denunciar post Postado Julho 24, 2006 Acho que isso pode ajudar .... http://www.ime.usp.br/~mms/mac2121s2003/ma...s2003aula15.pdf At+ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
elsd 0 Denunciar post Postado Fevereiro 7, 2007 Caro colega, estava por aqui passando e vi este tópico contendo o algoritmo de cópia de arquivos e fiquei um pouco confuso. Este código não funcionará 100% corretamente. Segue os bugs que levantei: - Comparação dos nomes do arquivo: Está comparando somente o primeiro caracter do nome, logo se tentar copiar de C:\TESTE.TXT para C:\TESTE2.TXT a rotina informará que os nomes estão iguais. - Correção: troque if(*argv[1] != *argv[2]) por if(stricmp( argv[ 1 ], argv[ 2 ] ) - O loop na comparação dos nomes é desnecessário. - Correção: retire o loop. - O loop de copia não copia o ultimo byte do arquivo original e é muito lento. - Correção: use as funções fread() e fwrite() para tornar a cópia mais rápido, retire o if dentro do loop. O código abaixo exemplica uma rotina completa de cópia de arquivos. int main( int argc, char** argv ){ FILE *origem, *destino; char buffer[ 2048 ]; size_t bytes; if( argc < 3 ) { printf( "\nSintaxe Correta:\n" ); printf( "copiar ARQUIVO_ORIGEM ARQUIVO_DESTINO\n\n" ); return( -1 ); } if( !strcmp( argv[ 1 ], argv[ 2 ] ) { printf( "O nome do arquivo original não pode ser igual ao da cópia.\n" ); return( -1 ); } origem = fopen( argv[ 1 ], "rb" ); if( !origem ) { printf( "Erro ao abrir arquivo de origem.\n" ); return( -1 ); } destino = fopen( argv[ 2 ], "wb" ); if( !destino ) { fclose( origem ); printf( "Erro ao abrir arquivo de destino.\n" ); return( -1 ); } bytes = fread( buffer, sizeof( char ), 2048, origem ); while( !feof( origem ) ) { fwrite( buffer, sizeof( char ), bytes, destino ); bytes = fread( buffer, sizeof( char ), 2048, origem ); } fclose( origem ); fclose( destino ); return( 0 );} Espero que este exemplo ajude. Até mais! Compartilhar este post Link para o post Compartilhar em outros sites
Ninetails 0 Denunciar post Postado Maio 26, 2007 lol meu professor auhauahuah http://www.ime.usp.br/~mms/mac2121s2007/mac2121s2007.html quem quiser explicações sobre as funções utilizadas Compartilhar este post Link para o post Compartilhar em outros sites