Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define TAM_STR 200
- #define TAM_VET 50
- // Estrutura para armazenamento do nome do metodo de refino e um numero associado
- // Conheço dois principais tipos de refino,um e a destilação fracionada e o outro e o craqueamento ou pirólise(cracking)
- typedef struct str_refino{
- char nomeRefino[TAM_STR];
- int numero;
- }tipo_refino;
- // Estrutura para armazenamento de nome,medida dos produtos quimicos e em qual refino que foi utilizado
- typedef struct str_prodQuimico{
- char nomeprodQuimico[TAM_STR];
- int numdeRefinos;
- tipo_refino metododeRefino[TAM_VET];
- char medidaprodQuimico[TAM_STR];
- }tipo_prodQuimico;
- // Variáveis globais
- int numprodQuimicos;
- tipo_prodQuimico prodQuimico[TAM_VET];
- // Protótipos de funcoes
- tipo_prodQuimico criaprodQuimico();
- void leituraTextual(char nomeArq[TAM_STR]);
- void impressaoTextual(char nomeArq[TAM_STR]);
- void leituraBinaria(char nomeArq[TAM_STR]);
- void impressaoBinaria(char nomeArq[TAM_STR]);
- // Função que recebe dados de um produto quimico
- tipo_prodQuimico criaprodQuimico(){
- tipo_prodQuimico produto;
- int i;
- printf("Digite o nome do produto quimico:\n");
- scanf("%s",produto.nomeprodQuimico);
- printf("Digite o numero de metodos de refino:\n");
- scanf("%d",&produto.numdeRefinos);
- for(i=0;i<produto.numdeRefinos;i++){
- printf("Digite o nome do refino:\n");
- scanf("%s", produto.metododeRefino[i].nomeRefino);
- printf("Digite 1 para destilação e 2 para craqueamento:\n");
- scanf("%d", &produto.metododeRefino[i].numero);
- }
- printf("Digite a medida usada no produto quimico:\n");
- gets(produto.medidaprodQuimico);
- return produto;
- }
- // Função que realiza a leitura das receitas de um arquivo texto
- void leituraTextual(char nomeArq[TAM_STR]){
- FILE *arq;
- int i,j;
- arq = fopen(nomeArq,"r");
- if(arq==NULL){
- printf("Erro na abertura do arquivo\n");
- exit(1);
- }
- fscanf(arq,"%d\n",&numprodQuimicos);
- for(i=0;i< numprodQuimicos;i++){
- fgets(prodQuimico[i].nomeprodQuimico,TAM_STR,arq);
- fscanf(arq,"%d\n",&prodQuimico[i].numdeRefinos);
- for(j=0;j<prodQuimico[i].numdeRefinos;j++){
- fscanf(arq,"%s\n",prodQuimico[i].metododeRefino[j].nomeRefino);
- fscanf(arq,"%d\n",&prodQuimico[i].metododeRefino[j].numero);
- }
- fgets(prodQuimico[i].medidaprodQuimico,TAM_STR,arq);
- }
- fclose(arq);
- }
- // Função que imprime as receitas em um arquivo texto
- void impressaoTextual(char nomeArq[TAM_STR]){
- FILE *arq;
- int i,j;
- arq = fopen(nomeArq,"w");
- if(arq==NULL){
- printf("Erro na abertura do arquivo\n");
- exit(1);
- }
- fprintf(arq,"%d\n",numprodQuimicos);
- for(i=0;i<numprodQuimicos;i++){
- fprintf(arq,"%s\n",prodQuimico[i].nomeprodQuimico);
- fprintf(arq,"%d\n",prodQuimico[i].numdeRefinos);
- for(j=0;j<prodQuimico[i].numdeRefinos;j++){
- fprintf(arq,"%s\n",prodQuimico[i].metododeRefino[j].nomeRefino);
- fprintf(arq,"%d\n",prodQuimico[i].metododeRefino[j].numero);
- }
- fprintf(arq,"%s\n",prodQuimico[i].medidaprodQuimico);
- }
- fclose(arq);
- }
- // Função que realiza a leitura de um arquivo binário
- void leituraBinaria(char nomeArq[TAM_STR]){
- FILE *arq;
- arq = fopen(nomeArq,"rb");
- if(arq==NULL){
- printf("Erro na abertura do arquivo\n");
- exit(1);
- }
- fread(&numprodQuimicos,sizeof(int),1,arq);
- fread(&prodQuimico,sizeof(tipo_prodQuimico),numprodQuimicos,arq);
- fclose(arq);
- }
- // Função que imprime os dados de um produto quimico em um arquivo binário
- void impressaoBinaria(char nomeArq[TAM_STR]){
- FILE *arq;
- arq = fopen(nomeArq,"wb");
- if(arq==NULL){
- printf("Erro na abertura do arquivo\n");
- exit(1);
- }
- fwrite(&numprodQuimicos,sizeof(int),1,arq);
- fwrite(&prodQuimico,sizeof(tipo_prodQuimico),numprodQuimicos,arq);
- fclose(arq);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement