Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda C


Thiago lablonsk

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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
Link para o comentário
Compartilhar em outros sites

  • 0
#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...
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...