Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Enumciado:
- 1. Dado um arquivo chamado MOVIM.ARQ contendo respectivamente os dados de
- crédito e débito operados nas contas correntes dos clientes ao final de um dia. Estes dados possuem os seguintes campos:
- CC (conta corrente) inteiro longo
- C_D (Credito ou Debito) caracter (‘C’ ou ‘D’)
- VALOR (Valor da operação) real (sempre positivo, mesmo que seja débito)
- DATA (Data da operação) string de 11, no formato “dd/mm/aaaa”
- a) Faça um programa que seja capaz de gerar dois arquivos chamados
- CRED.ARQ e DEB.ARQ através da leitura do arquivo MOVIM.ARQ e consequente
- separação dos registros, conforme estes sejam registros de crédito ou débito.
- Portanto, no arquivo CRED.ARQ haverá somente registros de crédito e no arquivo DEB.ARQ, somente registros de débito. Descreva a(s) estrutura(s) que será(ão) utilizada(s) pelos arquivos.*/
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- /*
- CC (conta corrente) inteiro longo
- C_D (Credito ou Debito) caracter (‘C’ ou ‘D’)
- VALOR (Valor da operação) real (sempre positivo, mesmo que seja débito)
- DATA (Data da operação) string de 11, no formato “dd/mm/aaaa”
- */
- struct sMovim{
- long int CC;
- float VALOR;
- char C_D;
- char DATA[11];
- };
- struct sCredDeb{
- long int CC;
- float VALOR;
- char C_D;
- char DATA[11];
- };
- int main(){
- FILE *movim, *credito, *debito;
- int totCred = 0, totDeb = 0;
- struct sMovim regMovim;
- struct sCredDeb regOut;
- movim = fopen("MOVIM.ARQ", "rb");
- credito = fopen("CRED.ARQ", "wb");
- debito = fopen("DEB.ARQ", "wb");
- fread(®Movim, sizeof(struct sMovim), 1, movim); //le primeiro registro
- while(!feof(movim))
- {
- //copia dos dados para o registro de saida
- regOut.CC=regMovim.CC;
- regOut.VALOR=regMovim.VALOR;
- strcpy(regOut.DATA,regMovim.DATA);
- if (regMovim.C_D == 'C')
- //credito
- {
- fwrite(®Out, sizeof(struct sCredDeb), 1, credito);
- totCred++;
- }
- else if(regMovim.C_D == 'D')
- //debito
- {
- fwrite(®Out, sizeof(struct sCredDeb), 1, debito);
- totDeb++;
- }
- fread(®Movim, sizeof(struct sMovim), 1, movim); //le proximo registro
- }
- fclose(movim);
- fclose(credito);
- fclose(debito);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement