Advertisement
abraao

Dado um arquivo chamado MOVIM.ARQ

Dec 12th, 2014
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*Enumciado:
  2. 1. Dado um arquivo chamado MOVIM.ARQ contendo respectivamente os dados de
  3. crédito e débito operados nas contas correntes dos clientes ao final de um dia. Estes dados possuem os seguintes campos:
  4. CC (conta corrente) inteiro longo
  5. C_D (Credito ou Debito) caracter (‘C’ ou ‘D’)
  6. VALOR (Valor da operação) real (sempre positivo, mesmo que seja débito)
  7. DATA (Data da operação) string de 11, no formato “dd/mm/aaaa”
  8. a) Faça um programa que seja capaz de gerar dois arquivos chamados
  9. CRED.ARQ e DEB.ARQ através da leitura do arquivo MOVIM.ARQ e consequente
  10. separação dos registros, conforme estes sejam registros de crédito ou débito.
  11. 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.*/
  12.  
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. #include <string.h>
  16.  /*
  17. CC (conta corrente) inteiro longo
  18. C_D (Credito ou Debito) caracter (‘C’ ou ‘D’)
  19. VALOR (Valor da operação) real (sempre positivo, mesmo que seja débito)
  20. DATA (Data da operação) string de 11, no formato “dd/mm/aaaa”
  21.   */
  22.  
  23. struct sMovim{
  24.  
  25.         long int CC;
  26.         float VALOR;
  27.         char C_D;
  28.         char DATA[11];
  29. };
  30.  
  31. struct sCredDeb{
  32.  
  33.         long int CC;
  34.         float VALOR;
  35.         char C_D;
  36.         char DATA[11];
  37. };
  38.  
  39. int main(){
  40. FILE *movim, *credito, *debito;
  41. int totCred = 0, totDeb = 0;
  42. struct sMovim regMovim;
  43. struct sCredDeb regOut;
  44.  
  45. movim = fopen("MOVIM.ARQ", "rb");
  46. credito = fopen("CRED.ARQ", "wb");
  47. debito = fopen("DEB.ARQ", "wb");
  48.  
  49. fread(&regMovim, sizeof(struct sMovim), 1, movim); //le primeiro registro
  50.  
  51. while(!feof(movim))
  52. {
  53. //copia dos dados para o registro de saida
  54.     regOut.CC=regMovim.CC;
  55.     regOut.VALOR=regMovim.VALOR;
  56.     strcpy(regOut.DATA,regMovim.DATA);
  57.    
  58.     if (regMovim.C_D == 'C')
  59.     //credito
  60.     {
  61.     fwrite(&regOut, sizeof(struct sCredDeb), 1, credito);
  62.     totCred++;
  63.     }
  64.     else if(regMovim.C_D == 'D')
  65.     //debito
  66.     {
  67.     fwrite(&regOut, sizeof(struct sCredDeb), 1, debito);
  68.     totDeb++;
  69.     }
  70.     fread(&regMovim, sizeof(struct sMovim), 1, movim); //le proximo registro
  71. }
  72.  
  73. fclose(movim);
  74. fclose(credito);
  75. fclose(debito);
  76.  
  77. return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement