Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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
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!
lol meu professor auhauahuah
http://www.ime.usp.br/~mms/mac2121s2007/mac2121s2007.html
quem quiser explicações sobre as funções utilizadas
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.