Я реализую доказательства для большей программы и в этот случай я ввожу данные пациента, которые сохранялись позже в одном 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);
}