#1 Haciendo un menu, problema con matriz dinamica bidimencional
Hola gente, me estaba haciendo un menu, queria que el menu este recibiera 2 cadenas, una con el titulo y otra con als opciones, como siempre hago muchos ejercicios de pruebas que usan menus, queria hacer un menu simple y generico, cosa de que luego lo hago header, lo incluyo, mando menu y opciones y listo.
El tema esta en que, tengo un problema con la matriz dinamica o en la forma en que guardo los datos en ella, es que luego de tanto tiempo sin programar, estas vacaciones largas me hisieron mal, ya nose en donde estoy cometiendo el error.
La cosa es media complicada, xq recibe una cadena larga con las opciones y debo cartarla y guardar las opciones en una matriz dinamica de caracteres. No se asusten si ven un error grosero.
Corte bastante codigo que lo tenia comentado xq no importa ahora, la cosa es que no logro guardar bien las opciones en la matriz, siempre la matrices dinamicas bidimencionales me dieron dramas... la condicion de fin de ese while tb me persigue...
El tema esta en que, tengo un problema con la matriz dinamica o en la forma en que guardo los datos en ella, es que luego de tanto tiempo sin programar, estas vacaciones largas me hisieron mal, ya nose en donde estoy cometiendo el error.
La cosa es media complicada, xq recibe una cadena larga con las opciones y debo cartarla y guardar las opciones en una matriz dinamica de caracteres. No se asusten si ven un error grosero.
Código:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
int menu(char[],char[]);
void main()
{
int i;
char reso[51];
i=menu("M E N U BETA\0","Generar archivo binario|Efectuar mantenimiento|Listar dados de baja|Listar los N mayores o menores|Listarlos en orden|Estadistica de ingresos|Actualizacion automatica|Depuracion|Salir\0");
clrscr();
printf("La opcion selecionada fue la %d",i);
getch();
}
int menu(char id[],char cadena[])
{
int i,n,sel=1,cap,cant=0;
char **opciones=NULL,*aux;
opciones=(char **)malloc(30*sizeof(char *)); //NC
*opciones=(char *)malloc(1*sizeof(char)); //NF
aux=strchr(cadena,'\0');
while(cadena)
{
aux=strrchr(cadena,'|');
sscanf(aux,"|%s",&(*opciones));
opciones++;
*opciones=(char *)malloc(1*sizeof(char)); //NF
*aux='\0';
cant++;
printf("%s",--opciones); getch(); //prueba
opciones++;
}
return sel;
}
Editado por Shivan - 13.08.2009 04:39 hs.
0