Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*5. [Farrer - Algoritmos Estruturados] Dado o arquivo cadastro com registros
- com os campos nome, sexo, corDosOlhos, peso e dataDeNascimento. , separá-lo em dois arquivos:
- um chamado homens, com os registros cujo campo SEXO apresente o valor 1 (sexo masculino)
- e o outro chamado mulheres, com os registros cujo campo SEXO seja igual a 2 (sexo feminino).
- Os registros dos novos arquivos deverão possuir os seguintes campos: nome, corDosOlhos,
- peso e dataDeNascimento. */
- #include <stdio.h>
- #include <stdlib.h>
- #pragma pack(1)
- typedef struct {
- int sexo;
- char nome[30];
- char corDosOlhos[30];
- float peso;
- char dataDeNascimento[30];
- } bd;
- int main (void){
- FILE *arquivo , *masculino, *feminino;
- long tamanho;
- int n, i;
- bd registro;
- if((arquivo=fopen("cadastro.data", "r+b")) == NULL) {
- printf("Erro ao abrir o arquivo.\n");
- exit(1);
- }
- if((masculino=fopen("masculino.data", "w+b")) == NULL) {
- printf("Erro ao abrir o arquivo.\n");
- exit(1);
- }
- if((feminino=fopen("feminino.data", "w+b")) == NULL) {
- printf("Erro ao abrir o arquivo.\n");
- exit(1);
- }
- tamanho = tamanho_arquivo(arquivo);
- n = tamanho/98;
- for(i=0 ; i<n;i++) {
- fread(®istro, sizeof(bd), 1, arquivo);
- if (feof(arquivo))break;
- else if(registro.sexo==1){
- fwrite(®istro,sizeof(registro),1,masculino);
- }
- else if(registro.sexo==2){
- fwrite(®istro,sizeof(registro),1,feminino);
- }
- }
- fclose(arquivo);
- fclose(masculino);
- fclose(feminino);
- system("pause");
- return 0;
- }
- tamanho_arquivo(FILE *arquivo){
- long tamanho;
- if (arquivo != NULL) {
- // movimenta a posição corrente de leitura no arquivo
- // para o seu fim
- fseek(arquivo, 0, SEEK_END);
- // pega a posição corrente de leitura no arquivo
- tamanho = ftell(arquivo);
- // imprime o tamanho do arquivo
- printf("O arquivo possui %ld bytes\n\n", tamanho);
- fseek(arquivo,0,SEEK_SET); //volta pro começo do arquivo
- } else {
- printf("Deu erro!");
- }
- return tamanho;
- }
Advertisement
Add Comment
Please, Sign In to add comment