devolver una cadena de caracteres de un array de cadenas
hola a todos tengo un problemilla:
he creado una clase con un array de cadenas de 20 cars cada una. intento hacer un metodo que me devuelva solo una pero me da un error parece ser porque el array es 'array[5][20]' y lo que quiero devolver al ser solo una cadena es simplemente 'cadena'.
bueno no se si explico, aqui os dejo el objeto en cuestion. gracias!!
class Pila{
private:
char pila[N][20];// array de 5 cadenas de 20 cars
public:
Pila(){
for(int i=0; i<N; i++){
strcpy(pila[i], "0");
}
}
char *sacarcadena(){ // metodo que falla
char aux[20];
int i;
for(i=0; strcmp(pila[i], "0")!=0 && i<N; i++){
}
if(i==0)
return("pila vacia");
else{
strcpy(aux,pila[i-1]);
strcpy(pila[i-1], "0");
return(aux); // aqui esta el error en cuestion
}
}
int metercadena(char *cadena){
int i;
for(i=0; strcmp(pila[i], "0")!=0 && i<N; i++){
}
if(i==N)
return(0);// pila llena
else{
strcpy(pila[i-1],cadena);
return(1);// metido con exito
}
}
};
al compilar me da el tipici error:
function `char* Pila::sacarcadena()':
address of local variable `aux' returned
types in assignment of `char*' to `char[20]'
si alguien me puede ayudar se lo agradezco!!!
he creado una clase con un array de cadenas de 20 cars cada una. intento hacer un metodo que me devuelva solo una pero me da un error parece ser porque el array es 'array[5][20]' y lo que quiero devolver al ser solo una cadena es simplemente 'cadena'.
bueno no se si explico, aqui os dejo el objeto en cuestion. gracias!!
class Pila{
private:
char pila[N][20];// array de 5 cadenas de 20 cars
public:
Pila(){
for(int i=0; i<N; i++){
strcpy(pila[i], "0");
}
}
char *sacarcadena(){ // metodo que falla
char aux[20];
int i;
for(i=0; strcmp(pila[i], "0")!=0 && i<N; i++){
}
if(i==0)
return("pila vacia");
else{
strcpy(aux,pila[i-1]);
strcpy(pila[i-1], "0");
return(aux); // aqui esta el error en cuestion
}
}
int metercadena(char *cadena){
int i;
for(i=0; strcmp(pila[i], "0")!=0 && i<N; i++){
}
if(i==N)
return(0);// pila llena
else{
strcpy(pila[i-1],cadena);
return(1);// metido con exito
}
}
};
al compilar me da el tipici error:
function `char* Pila::sacarcadena()':
address of local variable `aux' returned
types in assignment of `char*' to `char[20]'
si alguien me puede ayudar se lo agradezco!!!
