Производить код пациента

Я реализую доказательства для большей программы и в этот случай я ввожу данные пациента, которые сохранялись позже в одном struct и я пробую производить код присоединенного пациента, у которого должен быть этот формат (<Inicial del 1er apellido><Inicial del 2º apellido><día><mes><año><valor aleatorio entre 1-700>), но не удайся и я не нахожу ошибку. Пример кода был бы этим: GM141017650

Программа в себе, если, который он составляет, но остается разоренным, прибыв в призыв подпрограммы generarcodigo.

Как он показал, шаг struct он из-за ссылки, так как он позволяет мне изменять поле codigo пациента посредством кода, произведенного в самой подпрограмме, реализованного все внутри того же самого.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


typedef struct{
  int dia;
  int mes;
  int anio;
}t_RegFecha;

typedef struct{
 char calle[20];
 int numcalle;
 char localidad[30];
 int codigopostal;
 char ciudad[30];
}t_RegDomicilio;


typedef struct{
 char codigo[20];
 char Nombre[15];
 char Apellido1[15];
 char Apellido2[15];
 char DNI[10];
 t_RegFecha FechaNacimiento;
 t_RegDomicilio Dom;
 t_RegFecha FechaAlta;
 t_RegFecha FechaBaja;
}t_RegPaciente;

typedef struct{
 char Nombre[15];
 char Apellido1[15];
 char Apellido2[15];
 char DNI[10];
 int numcolegiado;
 char Especialidad[30];
 t_RegDomicilio DireccionConsulta;
 int TelefonoConsulta;
 int ultimafactura;
}t_RegDatosDoctor;

void generarcodigo(t_RegPaciente *punt);


int main()
{
t_RegPaciente Paciente;

fflush(stdin);
printf("\nDatos del paciente...");
printf("\nNombre:");
gets(Paciente.Nombre);
printf("\nPrimer apellido:");
gets(Paciente.Apellido1);
printf("\nSegundo apellido:");
gets(Paciente.Apellido2);
printf("\nDNI:");
gets(Paciente.DNI);
printf("\nFecha de nacimiento(Día Mes Anio):");
scanf("%d %d %d",&Paciente.FechaNacimiento.dia,&Paciente.FechaNacimiento.mes,&Paciente.FechaNacimiento.anio);
fflush(stdin);
printf("\nDomicilio del paciente...");
printf("\n\tCalle:");
gets(Paciente.Dom.calle);
printf("\n\tNúmero de calle:");
scanf("%d",&Paciente.Dom.numcalle);
fflush(stdin);
printf("\n\tLocalidad:");
gets(Paciente.Dom.localidad);
printf("\n\tCódigo Postal:");
scanf("%d",&Paciente.Dom.codigopostal);
fflush(stdin);
printf("\n\tCiudad:");
gets(Paciente.Dom.ciudad);
printf("\nFecha de alta del paciente (Dia Mes Anio):");
scanf("%d %d %d",&Paciente.FechaAlta.dia,&Paciente.FechaAlta.mes,&Paciente.FechaAlta.anio);
fflush(stdin);
generarcodigo(&Paciente);

return 0;
}


void generarcodigo(t_RegPaciente *punt){
  int random;
  char aux[5];
  char codigo[15];

  strcat(codigo,punt->Apellido1[0]);
  strcat(codigo,punt->Apellido2[0]);
  itoa(punt->FechaNacimiento.dia,aux,10);
  strcat(codigo,aux);
  itoa(punt->FechaNacimiento.mes,aux,10);
  strcat(codigo,aux);
  itoa(punt->FechaNacimiento.anio,aux,10);
  strcat(codigo,aux);
  random=rand()%700+1;
  itoa(random,aux,10);
  strcat(codigo,aux);
  strcpy(punt->codigo,codigo);

}
5
задан 27.06.2019, 03:46
0 ответов