Thiago lablonsk Postado Agosto 24, 2014 Denunciar Share Postado Agosto 24, 2014 alguém pode ajudar? Necessito saber como eu faço para fazer 2 coisas. 1- usar uma struct dentro de uma função chamando ela no main com passagem de parametro usando ponteiro (->) 2- copiar um dado de um arquivo exemplo txt e jogar em uma variável.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Agosto 25, 2014 Denunciar Share Postado Agosto 25, 2014 1) Exemplo: #include <stdio.h> #include <math.h> struct ponto { int x, y; }; void distanciaEntreDoisPontos(struct ponto a, struct ponto b, struct ponto *distancia); int main() { struct ponto a, struct ponto b; a.x = 2; a.y = 4; b.x = 3; b.y = 3; struct ponto resultado; distanciaEntreDoisPontos(a, b, &resultado); printf("Distancia entre o ponto a e b:\nx: %d\ny: %d\n", resultado.x, resultado.y); return 0; } void distanciaEntreDoisPontos(struct ponto a, struct ponto b, struct ponto *distancia) { distancia->x = abs(a.x - b.x); distancia->y = abs(a.y - b.y); } 2) Primeiro, você precisa abrir o arquivo com fopen. Depois, precisa lê-lo com fscanf, fgets, fread, o que preferir. Se for só um número em um linha, fscanf seria o modo mais fácil. Após finalizar as operações com o arquivo, fechá-lo com fclose. Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thiago lablonsk Postado Agosto 28, 2014 Autor Denunciar Share Postado Agosto 28, 2014 Obrigado! Vou experimentar aqui!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thiago lablonsk Postado Agosto 28, 2014 Autor Denunciar Share Postado Agosto 28, 2014 Aqui está o codigo, #include <iostream> #include <stdio.h> FILE *arquivo; typedef struct paciente { int codPaciente=0; char nome[40]; char endereco[40]; char numero [14]; int bk=1; }; typedef struct medico { int codMedico; char endereco[40]; char numero [14]; int bk=1; }; typedef struct consulta { int codConsulta; char diasemana [13]; char hora [5]; int codMedico; int codPaciente; int bk=1; }; void gravar(struct paciente *grav) { arquivo= fopen("clinica.txt","ab"); if(arquivo==NULL) { arquivo=fopen("clinica.txt","wb+"); grav->codPaciente=1; } else { fseek(arquivo,-1,SEEK_END); fread(&grav,sizeof(grav),1,arquivo); } grav->codPaciente++; printf("Digite o nome do paciente \n"); gets(grav->nome); printf("Digite o endereco do paciente \n"); gets(grav->endereco); printf("Digite o numero do paciente \n"); gets(grav->numero); fwrite(&grav,sizeof(grav),1,arquivo); fclose(arquivo); } void deseja(int *a ,int *b ,struct paciente *grav) { do { fflush(stdin); gravar(grav); printf("\n Deseja imprimir?"); scanf("%d",a); while(*a!=2) { while(fread(&grav,sizeof(grav),1,arquivo)==1) { printf("\n %d",grav->codPaciente); printf("\n %s",grav->nome); printf("\n %s",grav->endereco); printf("\n %s",grav->numero); } } fflush(stdin); printf("\n Deseja continuar? 1 Sim| 2 Nao "); scanf("%d",a); }while(*b!=2); } using namespace std; int main() { int a,c,*p1,*p3; struct paciente b,*p2; p1=&a; p2=&b; p3=&c; deseja(p1,p3,p2); return 0; } Tente executa-lo. Esqueça o bk Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thiago lablonsk Postado Agosto 29, 2014 Autor Denunciar Share Postado Agosto 29, 2014 #include <iostream> #include <stdio.h> FILE *arquivo; typedef struct paciente { int codPaciente=0; char nome[40]; char endereco[40]; char numero [14]; }; typedef struct medico { int codMedico; char endereco[40]; char numero [14]; }; typedef struct consulta { int codConsulta; char diasemana [13]; char hora [5]; int codMedico; int codPaciente; }; void gravar(struct paciente *grav) { arquivo= fopen("clinica.txt","ab"); if(arquivo==NULL) { arquivo=fopen("clinica.txt","wb+"); grav->codPaciente=1; } else { fread(&grav,sizeof(grav),1,arquivo); } fscanf(arquivo,"%d",grav->codPaciente); grav->codPaciente++; printf("Digite o nome do paciente \n"); gets(grav->nome); printf("Digite o endereco do paciente \n"); gets(grav->endereco); printf("Digite o numero do paciente \n"); gets(grav->numero); fwrite(&grav,sizeof(grav),1,arquivo); fclose(arquivo); } void deseja(int *a ,struct paciente *grav) { do { fflush(stdin); gravar(grav); printf("\n Deseja imprimir?"); scanf("%d",a); if(*a==1) { arquivo=fopen("clinica.txt","r"); while(fread(&grav,sizeof(grav),1,arquivo)==1) { printf("\n %d",grav->codPaciente); printf("\n %s",grav->nome); printf("\n %s",grav->endereco); printf("\n %s",grav->numero); } fclose(arquivo); } fflush(stdin); printf("\n Deseja continuar? 1 Sim| 2 Nao "); scanf("%d",a); }while(*a!=2); } using namespace std; int main() { int a,*p1; struct paciente b,*p2; p1=&a; p2=&b; deseja(p1,p2); return 0; } Esse codigo está funcionando agora mais com um detalhe, ele esta gravando em cima do que já está escrito e reescrevendo de novo exemplo ele grava o cadastro 2 em cima do 1 e do 2. Poderia me ajudar? E ele escreve em cima do arquivo... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Thiago lablonsk
alguém pode ajudar?
Necessito saber como eu faço para fazer 2 coisas.
1- usar uma struct dentro de uma função chamando ela no main com passagem de parametro usando ponteiro (->)
2- copiar um dado de um arquivo exemplo txt e jogar em uma variável....
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.