Menú principal

Tengo problemas con los registros

Publicado por cazador.asesino, Julio 09, 2008, 05:19:15 PM

Tema anterior - Siguiente tema

cazador.asesino

Al leer Registro.Cod y luego Registro.Nombre parte del registro. nombre se inserta en el código, a que se debe? 8)

void IngresarRegAlumno()
{
   char Codigo[9];
   system("cls");

   cout << "\n\r INGRESAR REGISTROS DE ALUMNOS ";
   F = fopen("Alumnos.Sec","rb+");
   if(F == NULL)
   {
      F = fopen("Alumnos.Sec","wb");
   }

   cout << "\n\n\n\rCodigo  ---> ";

   Leercod(Registro.Cod,14,5);
   //Test del código
   //cout<<"\nEste es el codigo: "<<Codigo;

   fread(&Registro,sizeof(Registro),1,F);
   while(!feof(F))
   {
      if(strcmp(Registro.Cod,Codigo)==0)
      {
         cout << "\n\n\n\rRegistro DUPLICADO ...!!!";
         fclose(F);
         getch();
         return;
      }
      fread(&Registro,sizeof(Registro),1,F);
   }
   strcpy(Registro.Cod,"         ");
   strcpy(Registro.Cod,Codigo);
   //Test del Código
   //cout<<"\nEste es el codigo: "<<Registro.Cod;

   cout<< "\n\rNombre ----> ";
   //strcpy(Registro.Nombre,"                                                ");
   Leernom(Registro.Nombre,14,6);
   //cout<<"\nEste es eL NOM: "<<Registro.Nombre;

   //Test del Código
   //cout<<"\nEste es el codigo: "<<Registro.Cod;
   strcpy(Registro.Cod,"         ");
   strcpy(Registro.Cod,Codigo);

   cout<< "\n\rPeso ------> ";
   Registro.Peso=0;
   cin>> Registro.Peso;

   cout<< "\n\rEscuela ---> ";
   strcpy(Registro.Escuela,"");
   cin>> Registro.Escuela;

   do
   {
      system("cls");
      cout << "\n\r                       AUTOSEGURO  DE   ALUMNOS ";
      cout << "\n\r";
      cout << "\n\r Ingrese 1 Si Cancelo Autoseguro.-";
      cout << "\n\r Ingrese 2 Si No Cancelo Autoseguro.-" ;
      cout << "\n\r";
      cout << "\n\r Condicion--> ";
      Registro.Cond = LeerInt(15,7,9);
      //cin >> Registro.Cond;
   }while(Registro.Cond<=0 || Registro.Cond>2);

   fwrite(&Registro, sizeof(Registro), 1, F);
   fclose(F);
   cout << "\n\n\n\rALUMNO registrado !!!\n";
   cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
   getch();
   return;
}
--->   142857   <---

dhararon

Cita de: czador.asesino en Julio 09, 2008, 05:19:15 PM
Al leer Registro.Cod y luego Registro.Nombre parte del registro. nombre se inserta en el código, a que se debe? 8)

void IngresarRegAlumno()
{
   char Codigo[9];
   system("cls");

   cout << "\n\r INGRESAR REGISTROS DE ALUMNOS ";
   F = fopen("Alumnos.Sec","rb+");
   if(F == NULL)
   {
      F = fopen("Alumnos.Sec","wb");
   }

   cout << "\n\n\n\rCodigo  ---> ";

   Leercod(Registro.Cod,14,5);
   //Test del código
   //cout<<"\nEste es el codigo: "<<Codigo;

   fread(&Registro,sizeof(Registro),1,F);
   while(!feof(F))
   {
      if(strcmp(Registro.Cod,Codigo)==0)
      {
         cout << "\n\n\n\rRegistro DUPLICADO ...!!!";
         fclose(F);
         getch();
         return;
      }
      fread(&Registro,sizeof(Registro),1,F);
   }
   strcpy(Registro.Cod,"         ");
   strcpy(Registro.Cod,Codigo);
   //Test del Código
   //cout<<"\nEste es el codigo: "<<Registro.Cod;

   cout<< "\n\rNombre ----> ";
   //strcpy(Registro.Nombre,"                                                ");
   Leernom(Registro.Nombre,14,6);
   //cout<<"\nEste es eL NOM: "<<Registro.Nombre;

   //Test del Código
   //cout<<"\nEste es el codigo: "<<Registro.Cod;
   strcpy(Registro.Cod,"         ");
   strcpy(Registro.Cod,Codigo);

   cout<< "\n\rPeso ------> ";
   Registro.Peso=0;
   cin>> Registro.Peso;

   cout<< "\n\rEscuela ---> ";
   strcpy(Registro.Escuela,"");
   cin>> Registro.Escuela;

   do
   {
      system("cls");
      cout << "\n\r                       AUTOSEGURO  DE   ALUMNOS ";
      cout << "\n\r";
      cout << "\n\r Ingrese 1 Si Cancelo Autoseguro.-";
      cout << "\n\r Ingrese 2 Si No Cancelo Autoseguro.-" ;
      cout << "\n\r";
      cout << "\n\r Condicion--> ";
      Registro.Cond = LeerInt(15,7,9);
      //cin >> Registro.Cond;
   }while(Registro.Cond<=0 || Registro.Cond>2);

   fwrite(&Registro, sizeof(Registro), 1, F);
   fclose(F);
   cout << "\n\n\n\rALUMNO registrado !!!\n";
   cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
   getch();
   return;
}
mira, yo me especializo mas en C aunque C++ es casi = cambian unas cosas.

primero;

void IngresarRegAlumno()
{

si quisiste meter una declaracion de struct esta mal,  ya que si asi inicia tu cod, tiene que llebar main() o void main

luego

Citar
F = fopen("Alumnos.Sec","rb+");
para abrir un archivo tienes que
declarar FILE *F;
despues poner
F=fopen("Alumnos.Sec","rb+");
nose conque lo quieres abrir, si lo vas a crear apenas cambia rb+ por w,  luego
Alumnos.Sec  cuando pones eso el archivo se llamara alumnos con extension sec
para cambiar la extension pon alumnos.txt, asi lo abrira el block de notas

lo que quieres hacer con el apuntador de F es algo raro, yaque primero le das un valor a F y declaras que si cumple con esa condicion, f cambia a ser F = fopen("Alumnos.Sec","wb");

te recomiendo que busques con super google, apuntadores y lo checas para conoser mas de F=

otra si usas Registro.Cod . es para la estructura
ejemplo

struct Registro{
char cod[50];
char codi[30];
int num[10];
}
eso quiere decir que si nombras

registro.codi,  va a abrir lo que guardes alli
en tu codigo no note que usaras struct


espero y eso te ayude con algo

cazador.asesino

Es que el codigo es muy grande,.. 8)

/**
*  NombreProg:  Alumnos
*  Descripcion: Archivo de registro de alumnos
*
*   AUTORES: Yo y Anónimo
          
*  Fecha:  07 de Diciembre de 2007
*/
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>

struct ALUMNO
{
   char Cod[9];
   char Nombre[50];
   char Escuela[4];
   float Peso;
   int Cond;
};

struct ALUMNO Registro;

FILE *F;

int  MenuAlumno();
void IngresarRegAlumno();
void BuscarxCodAlumno();
void MostrarRegAlumno();
void EliminacionxCodAlumno();
void EliminacionFisicaxCodAlumno();
void ActualizacionxCodAlumno();
/***********************************************************************************/
//Cabecera del llamado a funciones validar enteros de tamaño definido.
int ConvCadDig_Int(char *c);
int LeerCadDig(char *c,int x,int y,int tam);
int LeerInt(int x,int y,int tam);   //Funcion a utilizar
/***********************************************************************************/
int Leercod(char c[9],int x,int y);
int Leernom(char c[50],int x,int y);
int main()
{
   int Opcion;
   do
   {
      Opcion = MenuAlumno();
      switch(Opcion)
      {
         case 1 : IngresarRegAlumno();
                  break;
         case 2 : BuscarxCodAlumno();
                  break;
         case 3 : ActualizacionxCodAlumno();
                   break;
         case 4 : EliminacionxCodAlumno();
                  break;
         case 5 : EliminacionFisicaxCodAlumno();
                  break;
         case 6 : MostrarRegAlumno();
                  break;
      }
   }while(Opcion != 0);
   system("pause");
   return(0);
}

int  MenuAlumno()
{
   int i;
   do
   {
      system("cls");
      cout << "\n\n\r      U N I V E R S I D A D  N A C I O N A L  D E  I N G E N I E R I A ";
      cout << "\n\n\r                D E P A R T A M E N T O       M E D I C O      ";
      cout << "\n\n\r                       ARCHIVO  DE   ALUMNOS ";
      cout << "\n\r";
      cout << "\n\n\n\r 1.- INGRESAR REGISTRO DE ALUMNOS";
      cout << "\n\r 2.- BUSCAR ALUMNOS POR CODIGO";
      cout << "\n\r 3.- ACTUALIZAR DATOS DE ALUMNOS";
      cout << "\n\r 4.- ElIMINACION DE REGISTRO DE ALUMNOS ";
      cout << "\n\r 5.- LIMPIAR REGISTROS ";
      cout << "\n\r 6.- MOSTRAR REGISTROS";
      cout << "\n\r 0.- TERMINAR";

      cout << "\n\n\n\r Seleccione su opcion ---> ";
      i=LeerInt(28,20,1);
      //cin >> i;
   }while(i<0 || i>6);
   return(i);
}

void IngresarRegAlumno()
{
   char Codigo[9];
   system("cls");

   cout << "\n\r INGRESAR REGISTROS DE ALUMNOS ";
   F = fopen("Alumnos.Sec","rb+");
   if(F == NULL)
   {
      F = fopen("Alumnos.Sec","wb");
   }

   cout << "\n\n\n\rCodigo  ---> ";

   Leercod(Codigo,14,5);
   //Test del código
   //cout<<"\nEste es el codigo: "<<Codigo;

   fread(&Registro,sizeof(Registro),1,F);
   while(!feof(F))
   {
      if(strcmp(Registro.Cod,Codigo)==0)
      {
         cout << "\n\n\n\rRegistro DUPLICADO ...!!!";
         fclose(F);
         getch();
         return;
      }
      fread(&Registro,sizeof(Registro),1,F);
   }
   strcpy(Registro.Cod,"         ");
   strcpy(Registro.Cod,Codigo);
   //Test del Código
   cout<<"\nEste es el codigo: "<<Registro.Cod;

   cout<< "\n\rNombre ----> ";
   //strcpy(Registro.Nombre,"                                                ");
   Leernom(Registro.Nombre,14,6);
   cout<<"\nEste es eL NOMBRE: "<<Registro.Nombre;

   //Test del Código
   cout<<"\nEste es el codigo: "<<Registro.Cod;
   strcpy(Registro.Cod,"         ");
   strcpy(Registro.Cod,Codigo);

   cout<< "\n\rPeso ------> ";
   Registro.Peso=0;
   cin>> Registro.Peso;

   cout<< "\n\rEscuela ---> ";
   strcpy(Registro.Escuela,"");
   cin>> Registro.Escuela;

   do
   {
      system("cls");
      cout << "\n\r                       AUTOSEGURO  DE   ALUMNOS ";
      cout << "\n\r";
      cout << "\n\r Ingrese 1 Si Cancelo Autoseguro.-";
      cout << "\n\r Ingrese 2 Si No Cancelo Autoseguro.-" ;
      cout << "\n\r";
      cout << "\n\r Condicion--> ";
      Registro.Cond = LeerInt(15,7,9);
      //cin >> Registro.Cond;
   }while(Registro.Cond<=0 || Registro.Cond>2);

   fwrite(&Registro, sizeof(Registro), 1, F);
   fclose(F);
   cout << "\n\n\n\rALUMNO registrado !!!\n";
   cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
   getch();
   return;
}

void MostrarRegAlumno()
{
   int i=0;
   system("cls");

   cout << "\n\r\t\t\tLISTADO DE REGISTROS DE ALUMNOS";
   F = fopen("Alumnos.Sec","rb");
   if(F == NULL)
   {
      cout << "\n\n\n\rNo existe el archivo !!!\n";
      cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
      getch();
      return;
   }

   cout << "\n\r===============================================================================";
   cout << "\n\r CODIGO         NOMBRES  Y  APELLIDOS             ESCUELA      PESO   CONDICION    ";
   cout << "\r-------------------------------------------------------------------------------    ";
   fread(&Registro, sizeof(Registro), 1, F);
   while(!feof(F))
   {
      gotoxy(2,7+i);
      cout<<Registro.Cod;

      gotoxy(17,7+i);
      cout<<Registro.Nombre;
      //printf("%s",&Registro.Nombre);

      gotoxy(53,7+i);
      cout<<Registro.Escuela;

      gotoxy(65,7+i);
      cout<<Registro.Peso;

      gotoxy(75,7+i);
      cout<<Registro.Cond;

      i=i+1;
      //printf("\n\r%9i\t%-30s\t%8s\t%-6.1f\%6i\t",Registro.Cod,Registro.Nombre,Registro.Escuela,Registro.Peso,Registro.Cond);
      fread(&Registro,sizeof(Registro),1,F);
   }
   fclose(F);
   cout << "\n\n\r------------------------------------------------------------------------------";
   cout << "\n\rFin del listado !!!\n";
   cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
   getch();
   return;
}

void BuscarxCodAlumno()
{
   char Codigo[9];
   system("cls");
   cout << "\n\rBUSCAR REGISTROS POR CODIGO DE ALUMNOS";
   F = fopen("Alumnos.Sec","rb");
   if(F == NULL)
   {
      cout << "\n\n\n\rNo existe el archivo !!!\n";
      cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
      getch();
      return;
   }

   cout << "\n\n\n\r Codigo ----> ";
   //Codigo=LeerInt(15,5,8);
   Leercod(Codigo,15,5);
   fread(&Registro, sizeof(Registro), 1, F);

   while(!feof(F))
   {
      if(strcmp(Registro.Cod,Codigo)==0)
      {
         cout << "\n\r===============================================================================";
           cout << "\n\r CODIGO         NOMBRES  Y  APELLIDOS             ESCUELA      PESO   CONDICION    ";
         cout << "\n\r-------------------------------------------------------------------------------    ";
         printf("\n\r%9s\t%-30s\t%8s\t%-6.1f\%6i\t",Registro.Cod,Registro.Nombre, Registro.Escuela, Registro.Peso,Registro.Cond);
         cout << "\n\r-------------------------------------------------------------------------------";
         getch();
         return;
      }
      fread(&Registro, sizeof(Registro), 1, F);
   }
   cout << "\n\rNo se encuentra ese registro !!!\n";
   fclose(F);
   cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
   getch();
   return;
}
void ActualizacionxCodAlumno()
{

   char Codigo[9];
   system("cls");

   cout << "\n\rACTUALIZAR REGISTROS POR CODIGO DE ALUMNOS";
   F = fopen("Alumnos.Sec","rb+");
   if(F == NULL)
   {
      cout << "\n\n\n\rNo existe el archivo !!!\n";
      cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
      getch();
      return;
   }

   cout << "\n\n\n\rCodigo ----> ";
   //Codigo=LeerInt(14,5,8);
   Leercod(Codigo,14,5);
   fread(&Registro, sizeof(Registro), 1, F);

   while(!feof(F))
   {
      if(strcmp(Registro.Cod,Codigo)==0)
      {

         cout << "\n\r===============================================================================";
           cout << "\n\r CODIGO         NOMBRES  Y  APELLIDOS             ESCUELA      PESO   CONDICION    ";
         cout << "\n\r-------------------------------------------------------------------------------    ";
         printf("\n\r%9s\t%-30s\t%8s\t%-6.1f\%6i\t",Registro.Cod,Registro.Nombre, Registro.Escuela, Registro.Peso,Registro.Cond);
         cout << "\n\r-------------------------------------------------------------------------------";

         cout << "\n\n\n\rIngrese los nuevos datos ...";
         cout << "\n\rEscuela ---> "; cin >> Registro.Escuela;
         cout << "\n\rNombre ----> "; gets(Registro.Nombre);
         cout << "\n\rPeso ------> "; cin >> Registro.Peso;
         cout << "\n\rCondicion -> ";
         Registro.Cond = LeerInt(14,24,1);
         //cin >> Registro.Cond;

         fseek(F, ftell(F)-sizeof(Registro), SEEK_SET);
         fwrite(&Registro, sizeof(Registro), 1, F);
         fclose(F);
         cout << "\n\n\n\rRegistro modificado !!!\n";
         cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
         getch();
         return;
      }
      fread(&Registro, sizeof(Registro), 1, F);
   }
   cout << "\n\rNo se encuentra ese registro !!!\n";
   fclose(F);
   cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
   getch();
   return;
}
void EliminacionxCodAlumno()
{

   char Codigo[9];
   char op;
   system("cls");

   cout << "\n\rELIMINACION LOGICA DE REGISTROS DE ALUMNOS";
   F = fopen("Alumnos.Sec","rb+");
   if(F == NULL)  // Checa la existencia del archivo
   {
      cout << "\n\n\n\rNo existe el archivo !!!\n";
      cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
      getch();
      return;
   }

   cout << "\n\n\n\rCodigo ----> ";
   //Codigo=LeerInt(14,5,8);
   Leercod(Codigo,14,5);
   fread(&Registro, sizeof(Registro), 1, F);
   while(!feof(F))
   {
      if(strcmp(Registro.Cod,Codigo)==0)
      {
         cout << "\n\r===============================================================================";
           cout << "\n\r CODIGO         NOMBRES  Y  APELLIDOS             ESCUELA      PESO   CONDICION    ";
         cout << "\n\r-------------------------------------------------------------------------------    ";
         printf("\n\r%9s\t%-30s\t%8s\t%-6.1f\%6i\t",Registro.Cod,Registro.Nombre, Registro.Escuela, Registro.Peso,Registro.Cond);
         cout << "\n\r-------------------------------------------------------------------------------";

         strcpy(Registro.Cod,"");
         strcpy(Registro.Nombre, "");
         strcpy(Registro.Escuela, "");
         Registro.Peso = 0.0;
         Registro.Cond = 0.0;
         do {
            cout << "\n\n\r¿... SEGURO que desea BORRARLO ...? [S/N] ---> ";
            scanf("%s",&op);
         }while(op!='S' && op!='N' && op!='s' && op!='n');

         if(op == 'S' || op == 's')
         {
            fseek(F, ftell(F)-sizeof(Registro), SEEK_SET);
            fwrite(&Registro, sizeof(Registro), 1, F);
            cout << "\n\n\n\rRegistro eliminado !!!\n";
         }
         fclose(F);
         cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
         getch();
         return;
      }
      fread(&Registro, sizeof(Registro), 1, F);
   }
   cout << "\n\rNo se encuentra ese registro !!!\n";
   fclose(F); // Cierra el archivo
   cout << "\n\r<<<  ... RESIONE ENTER para continuar >>>";
   getch();
   return;
}

void EliminacionFisicaxCodAlumno()
{
   //Variable para controlar el archivo temporal
   FILE *Temporal;
   system("cls");

   cout << "\n\rELIMINACION FISICA DE REGISTROS DE ALUMNOS";
   // Intenta abrir el archivo PRODUCTO.SEC en modo de solo lectura
   F = fopen("Alumnos.Sec","rb");
   // Valida la existencia del archivo
   if(F == NULL)
   {
      cout << "\n\n\n\rNo existe el archivo !!!\n";
      cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
      getch();
      return;
   }
   // Crea el archivo Temporal.Sec
   Temporal = fopen("Temporal.Sec","wb");

   fread(&Registro, sizeof(Registro), 1, F);
   while(!feof(F))
   {
      if(Registro.Cod != 0)
      // Graba el registro valido en el archivo temporal
      fwrite(&Registro, sizeof(Registro), 1, Temporal);
      //Lee el siguinete elemento del archivo
      fread(&Registro, sizeof(Registro), 1, F);
   }
   //fcloseall(); // Cierra todos los archivos abiertos
   fclose(F);
   fclose(Temporal);
   remove("Alumnos.Sec"); //Elimina el archivo original
   rename("Temporal.Sec", "Alumnos.Sec");
   //Renombra el archivo temporal con el nombre del archivo original

   cout << "\n\n\n\rArchivo DEFRAGMENTADO ... !!!\n";
   cout << "\n\r<<< ... PRESIONE ENTER para continuar >>>";
   getch();
   return;
}

/*****************************************************************************/
//Funcion Valida enteros, compara cadenas bloquea el ingreso de char y enter,
// intro, tabulador, etc medinate la funcion isdigit().
/*****************************************************************************/

int ConvCadDig_Int(char *c)
{  int dig,vacio=1,ii=0,pp=0;

   while(c[ii]!='\0')
   {vacio=0;
   switch(c[ii])
   {    case '0':dig=0;break;
      case '1':dig=1;break;
      case '2':dig=2;break;
      case '3':dig=3;break;
      case '4':dig=4;break;
      case '5':dig=5;break;
      case '6':dig=6;break;
      case '7':dig=7;break;
      case '8':dig=8;break;
      case '9':dig=9;break;
   }
   pp=pp*10+dig;ii++;
   }
if(vacio)
{pp=-1;cprintf("Ingrese Entero No Nulo! <<CLICK>>");getch();
}
return (pp);
}

int LeerCadDig(char *c,int x,int y,int tam)
{char opc,esp=' ';
int i;
i=0;
   do
   {   gotoxy(x+i,y);
        do
      {opc=getch();
      }while(!(isdigit(opc)||opc=='\b'||opc=='\r'||opc=='\t'));

   if(opc=='\b')
   {  if(i==0)
      {c[0]='\0';
      }else
      i--;
      c='\0';cout<<'\b'<<esp;
   }
   else
   {  if(opc!='\r'&&opc!='\t')
      {

      c=opc;
      cprintf("%c",opc);
      i++;
      }else
      c='\0';

      if(i==tam)   //TAM min 1 TAM Max 9
      {opc=getch();
      if(opc=='\b')
      {   i--;c='\0';cout<<'\b'<<esp;
      }
      else
      {c='\0';opc='\r';
      }
      }
   }

   }while(!(opc=='\r'||opc=='\t'));
//getch();
return 0;
}

int LeerInt(int x,int y,int tam)//en la posicion g(x,y) y de tamaño max. tam
{   int p;
   char cing[11],ccte[11]="999999999";
   LeerCadDig(cing,x,y,tam);
   if(strcmp(cing,ccte)<=0)
   p=ConvCadDig_Int(cing);
   else
   p=-1;
   cout << "\n";
   return (p);
}

int Leernom(char c[9],int x,int y)
{   int i;
   char car;
   for(i=0;i<50;i++)
   {
      if(i<50)
      {
         do{
            gotoxy(x+i-1,y);
            cout<<" ";
            gotoxy(x+i-1,y);
            car=getche();

            if(car==' ')
            {
            gotoxy(x+i+1,y);
            }
            if(car=='\r')
            {
              return 0;
            }

         }while((car<'A'||car>'Z')&& car!=' '&&car!='\r');
      }
      c=car;

   }
   //Test del código
   cout<<"\tEste es el nombre: "<<c;
   return 0;
}

int Leercod(char c[50],int x,int y)
{   int i;
   char car;
   for(i=0;i<=8;i++)
   {
      if(i<8)
      {
         do{
            gotoxy(x+i-1,y);
            cout<<" ";
            gotoxy(x+i-1,y);
            car=getche();
         }while(car<'0'||car>'9');
      }
      else
      {
         do{
            gotoxy(x+i-1,y);
            cout<<" ";
            gotoxy(x+i-1,y);
            car=getche();
         }while(car<'A'||car>'Z');
      }
      c=car;
   }
   //Test del código
   //cout<<"\nEste es el codigo: "<<c;
   return 0;
}
--->   142857   <---

dhararon

#3
ahorita no tengo mucho tiempo, para checar el codigo.

pero probablemente se debe a que se usan apuntadores.

y ha de haber un error  ejemplo


nom=& x nombre del niño
nom=& x codigo

entonces lo 1 se borra para darle paso a lo siguiente

cazador.asesino

#4
El compilador ninguno, pero como ya dije parte del nombre se pega al codigo, y nada de nada(ya intenté todo)  8)

Modificado:
Está bién, cuando puedas a ver si me ayudas, gracias..
--->   142857   <---

cazador.asesino

Gracias, pero ya encontré el error, se debía a que reemplazaba el último caracter de una cadena(el /0 ) con otro caracter y por ello la cadena no tenía fin..Por ello se unían los campos nombre y código :D 8)
--->   142857   <---