Advertisement
drunkspinda02

ex ficheiros

Feb 11th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct ex{
  6. int num;
  7. char local[50];
  8. char maquina[50];
  9. int ano;
  10. char tipo[50];
  11. }estrutura;
  12.  
  13. estrutura fotograf;
  14.  
  15. FILE *fx;
  16. FILE *fa;
  17.  
  18. int pesquisan(int num){
  19.  
  20. fa=fopen("fotos.dat","a+");
  21. fread(&fotograf,sizeof(fotograf),1,fa);
  22.  
  23. while (!feof(fa) && fotograf.num!=num){
  24. fread(&fotograf,sizeof(fotograf),1,fa);
  25. }
  26.  
  27. int p=ftell(fa);
  28. fclose(fa);
  29.  
  30. if(fotograf.num==num){
  31. return p;
  32. }
  33. else{
  34. return 0;
  35. }
  36.  
  37.  
  38. }
  39.  
  40. void inserir(){
  41. int c,n;
  42. do{
  43. printf("Numero da foto:\n");
  44. scanf("%d",&n);
  45. if(pesquisan(n)==0){
  46. fx=fopen("fotos.dat","a+");
  47. fotograf.num=n;
  48. printf("Local:\n");
  49. scanf("%s",fotograf.local);
  50. printf("Maquina:\n");
  51. scanf("%s",fotograf.maquina);
  52. printf("Ano:\n");
  53. scanf("%d",&fotograf.ano);
  54. printf("Tipo:\n");
  55. scanf("%s",fotograf.tipo);
  56. fwrite(&fotograf,sizeof(fotograf),1,fx);
  57. fclose(fx);
  58. }
  59.  
  60. else{
  61. printf("Ja existe!\n");
  62. }
  63.  
  64. printf("Quer continuar a inserir dados? \n");
  65. scanf("%d",&c);
  66. }while (c==1);
  67.  
  68.  
  69. }
  70.  
  71. void listagem(){
  72.  
  73. int a1,a2,k=0,w=0;
  74. printf("Introduza o primeiro ano:\n");
  75. scanf("%d",&a1);
  76. printf("Introduza o segundo ano:\n");
  77. scanf("%d",&a2);
  78.  
  79. fx=fopen("fotos.dat","r");
  80. fread(&fotograf,sizeof(fotograf),1,fx);
  81.  
  82. while(!feof(fx)){
  83.  
  84. if(fotograf.ano==a1){
  85. k=k+1;
  86. }
  87. else if(fotograf.ano==a2){
  88. w=w+1;
  89. }
  90.  
  91. if(fotograf.ano>=a1 && fotograf.ano<=a2){
  92.  
  93. printf("Numero:%d\nLocal:%s\nMaquina:%s\nAno:%d\nTipo:%s\n\n",fotograf.num,fotograf.local,fotograf.maquina,fotograf.ano,fotograf.tipo);
  94. fread(&fotograf,sizeof(fotograf),1,fx);
  95. }
  96. else{
  97. fread(&fotograf,sizeof(fotograf),1,fx);
  98. }
  99. }
  100. fclose(fx);
  101. printf("Numero de fotos no ano %d: %d\n",a1,k);
  102. printf("Numero de fotos no ano %d: %d\n",a2,w);
  103.  
  104. }
  105.  
  106. void consulta()
  107. {
  108. fx=fopen("fotos.dat","r");
  109. fread(&fotograf,sizeof(fotograf),1,fx);
  110. while(!feof(fx)){
  111. printf("Numero:%d\nLocal:%s\nMaquina:%s\nAno:%d\nTipo:%s\n\n",fotograf.num,fotograf.local,fotograf.maquina,fotograf.ano,fotograf.tipo);
  112. fread(&fotograf,sizeof(fotograf),1,fx);
  113. }
  114. fclose(fx);
  115.  
  116. }
  117.  
  118. void limpa(){
  119. fx=fopen("fotos.dat","w");
  120. fclose(fx);
  121. }
  122.  
  123. int main() {
  124.  
  125. int op;
  126. if(fopen("fotos.dat","r")==NULL){
  127. fx=fopen("fotos.dat","w");
  128. fclose(fx);
  129. }
  130.  
  131. do{
  132. printf("1-Inserir dados\n");
  133. printf("2-Consulta global\n");
  134. printf("3-Consulta pelo intervalo de dois anos\n");
  135. printf("4-Limpar\n");
  136. printf("5-Sair\n");
  137. scanf("%d",&op);
  138. switch(op){
  139. case 1:inserir();
  140. break;
  141. case 2:consulta();
  142. break;
  143. case 3: listagem();
  144. break;
  145. case 4: limpa();
  146. break;
  147. }
  148. }while (op!=5);
  149.  
  150. return 0;
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement