Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/06/2012, 15:10
AndresLSP
 
Fecha de Ingreso: junio-2012
Mensajes: 1
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Punteros y Macros

Necesito que al ejecutar pueda ordenar de cuantos miembros de la marina quiero ingresar datos, pero me sale un error que no entiendo muy bien, no se donde esta la falla realmente...



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

int Getline(char s[], int lim)
{
int c, i;

for((i = 0); ((i < lim - 1) && (c = getchar()) != '\n' && c != '\0'); ++i)
s[i] = c;
if(c == '\n')
{
s[i] = c;
++i;
}
s[i] = '\0';

return i;
}
//http://espanol.answers.yahoo.com/question/index?qid=20060906085934AAIQD8I
enum Rangos{Almirante=1, ViceAlmirante, ContraAlmirante, CapitanNavo, CapitanFragata, CapitanCorbeta, TenienteNavo, TenienteFragata, TenienteCorbeta, MaestrePrimero, MaestreSegundo, MaestreTercero, Cabo, Soldado};

typedef struct{
enum Rangos Rango;
char Nombre [20];
char Apellido[20];
char Edad[2];

}MiembroFFAA;


typedef MiembroFFAA *Marin;

#define Estruct_escribir_NombreCampo_cadena(estructura,Cam po,Dato)(strcpy(estructura.Campo,Dato))
#define Estruct_leer_NombreCampo(estructura,campo)(estruct ura.campo)
#define Estruct_escribir_NombreCampo_numero(estructura,Cam po,valor)(estructura.Campo=valor)

#define Estruct_Escribir_NombreCampo_Cadena(Ptr,Campo,Dato )(strcpy(Ptr->Campo,Dato))
#define Estruct_Leer_NombreCampo(Ptr,Campo)(Ptr->Campo)
#define Estruct_Escribir_NombreCampo_Numero(Ptr,Campo,Valo r)(Ptr->Campo = Valor)
//#define Estruct_requerir_Campo(estructura,campo)(char Opcion[20]; printf ("%s", "Escriba el nombre"); scanf("%s", Opcion); Estruct_escribir_NombreCampo_cadena(estructura,cam po, Opcion);)

main()
{
unsigned int Indice = 0;
unsigned int ControlLectura = 0;
unsigned int IndiceLectura = 0;
char CadenaCapturada[40];
int EnteroCapturado;
char Usuario[30];
enum Rangos RangoAuxiliar;
char Continuar='s';



int Marin;
int *N;
printf("Ingrese el numero de marines: ");
scanf("%d", &Marin);
N = (int *)malloc(Marin*sizeof(int));
//http://todocporelinv.blogspot.com/2011/04/malloc-y-free-en-dev-c-por-elinv.html



printf ("%s\n", "================================================= =============");
printf ("%s\n", "=== ===");
printf ("%s\n", "=== TAXONOMIA: MIEMBROS DE LA FUERZA NAVAL ===");
printf ("%s\n", "=== ===");
printf ("%s\n\n\n", "================================================= =============");

printf("%s ","Ingrese Nombre de Usuario: ");
scanf("%s", Usuario);
fflush(stdin);
printf ("\n\n\n");

for(Indice= 0; Indice < 10 && Continuar=='s'; Indice++)
{
printf ("%s %s %d\n",Usuario," Ingrese los datos del Marin No. ",Indice);

printf("%s %d %s" ," => NOMBRE del Marin ",Indice, ": ");
Getline(CadenaCapturada,40);
Estruct_Escribir_NombreCampo_Cadena(Marin[Indice],Nombre,CadenaCapturada);

printf("%s %d %s" ," => APELLIDO del Marin ",Indice, ": ");
Getline(CadenaCapturada,40);
Estruct_Escribir_NombreCampo_Cadena(Marin[Indice],Apellido,CadenaCapturada);

printf("%s %d %s" ," => EDAD del Marin ",Indice, ": ");
Getline(CadenaCapturada,40);
Estruct_Escribir_NombreCampo_Cadena(Marin[Indice],Edad,CadenaCapturada);

printf("%s %d %s" ,"RANGO del Marin ",Indice, "Segun estas Opciones \n1.Almirante\n2.ViceAlmirante\n3.ContraAlmirante\ n4.CapitanNavo\n5.CapitanFragata\n6.CapitanCorbeta \n7.TenienteNavo\n8.TenienteFragata\n9.TenienteCor beta\n10.MaestrePrimero\n11.MaestreSegundo\n12.Mae streTercero\n14.Cabo\n15.Soldado: ");
scanf("%d",&RangoAuxiliar);
fflush(stdin);

ControlLectura++;

printf("%s ","Desea Continuar Ingresando Datos? (s/n) =>");
Continuar=getchar();
while(Continuar!='s' && Continuar!='n')Continuar=getchar();
fflush(stdin);
system ("cls");
}
printf("%s ","Desea Imprimir Los Datos Guardados? (s/n)") ;
Continuar=getchar();
while(Continuar!='s' && Continuar!='n')Continuar=getchar();
fflush(stdin);
system ("cls");

for(IndiceLectura=0;IndiceLectura<ControlLectura && Continuar=='s';IndiceLectura++){
printf("%s %d %s","Datos del Marin No. ",IndiceLectura,"\n");
printf("%s ", "NOMBRE:");
printf ("%s\n",Estruct_Leer_NombreCampo(Marin[IndiceLectura],Nombre));
printf("%s ", "APELLIDO:");
printf("%s\n" ,Estruct_Leer_NombreCampo(Marin[IndiceLectura],Apellido));
printf("%s ","EDAD:");
printf("%s\n",Estruct_Leer_NombreCampo(Marin[IndiceLectura],Edad));
printf("%s","RANGO No. ");
printf("%d\n",Estruct_Leer_NombreCampo(Marin[IndiceLectura],Rango));
printf("\n");
};

system("PAUSE");
}