Ir para conteúdo
Fórum Script Brasil

pjota

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre pjota

pjota's Achievements

0

Reputação

  1. pjota

    alguém me ajuda

    peço e agradeço a colaboração dos mestres. Escrever um programa que recebe como argumentos os nomes de dois ficheiros seguidos de 2 numeros que identificam a posição dentro de um ficheiro e o comprimento em bytes a partir da respectiva posição. atenção os seguintes pontos: i) O programa deve validar que estão presentes os 4 argumentos, escrevendo uma mensagem com o aspecto: Usage: myprog file1 file2 startPos len ii) Obviamente deverá controlar que file1 e file2 existem e/ou estão acessíveis para leitura/escrita e a não ser esse o caso escreverá a menssagem: ERROR myprog.c(100) : fail to fopen file x1 em modo ??. v) Todas as chamadas às várias funções devem ser validadas sendo em caso de falha escrita uma menssagem do tipo: ERROR myprog.c(120) : fail to fseek file x1 to position 1024 from start of file. vi) Deverá criar um macro para o fopen usado na abertura dos ficheiros. vii) Idealmente seria muito interessante desenvolver um macro para a escrita das mensagens de erro. viii) Os ficheiros terão que ter dimensão para conter a referida zona e se não for o caso, não faz nada. iv) Se os bytes nessas duas zonas dos ficheiros forem diferentes, deverá trocar o conteúdo de uma zona de um ficheiro com o conteúdo da zona correspondente no outro ficheiro. eu tenho isto mais ou menos, alguém pode verificar se sim.............. #include <stdio.h> #define MAX #define mFopen(fp,file,mode) do { \ if ( NULL == (fp=fopen(file, mode)) ) \ { \ printf("ERROR myprog.c: fail to open file %s em modo %s \n",file,mode); \ exit(1); \ } \ }while(0) int main(int argc, char *argv[]) { FILE *fp1, *fp2; char F1[100]; char F2[100]; int i, pos, len; char ch1,ch2; int fseek_f1 = 0; int fseek_f2 = 0; fp1=NULL; fp2=NULL; if(argc!=5) { printf("Usage: myprog file1 file2 startPos len\n"); } else { pos = atoi(argv[3]); len = atoi(argv[4]); mFopen(fp1, argv[1] , "r+"); mFopen(fp2, argv[2] , "r+"); fseek_f1 = fseek(fp1, pos, SEEK_SET); fseek_f2 = fseek(fp2, pos, SEEK_SET); printf("--- fseek_f1 %d fseek_f2 %d ---\n",fseek_f1,fseek_f2); for(i = 0; i < len; i++) { ch1=fgetc(fp1); ch2=fgetc(fp2); fseek_f1 = fseek(fp1, pos+i, SEEK_SET); fseek_f2 = fseek(fp2, pos+i, SEEK_SET); printf("--- fseek_ %d fseek_f2 %d ---\n",fseek_f1,fseek_f2); fputc(ch1,fp2); fputc(ch2,fp1); } fclose(fp1); fclose(fp2); } return 0;
×
×
  • Criar Novo...