SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: pacorubio77 en Domingo 13 de Abril de 2008, 20:21

Título: Duda Con String's,como Parámetro¡
Publicado por: pacorubio77 en Domingo 13 de Abril de 2008, 20:21
Hola,lo que quiero saber es si se puede utlizar un string como un bloque para pasarlo como parámetro.Me explico con un ejemplo:

yo tengo la siguiente cadena:

string cadena: HOLA/ADIOS    y quiero sacar esa cadena y meterla en "nuevacadena",para utilizar nuevacadena y usarla como parámetro de entrada de una función.

Yo solo sé una manera de almacenar,

void FuncionExtraer(){
    int i=0;
        while (cadena !='/')
                nuevacadena=cadena;
       i++;
      }

void Funcion2(nuevacadena){   AQUI COMO PUEDO METER NUEVACADENA?

}


int main(){
   FuncionExtraer();
   Funcion2(nuevacadena)

}


ENtendeis mi pregunta?,,lo que quiero meter a Funcion2 nuevacadena,y no se como hacerlo,podeís ayudarme????
Título: Re: Duda Con String's,como Parámetro¡
Publicado por: ProfesorX en Domingo 13 de Abril de 2008, 21:44
No se si entendi, no es acaso esto lo que quieres?

Código: Text
  1.  
  2. void Funcion2(char nuevacadena[])
  3. {
  4. }
  5.  
  6.  
Título: Re: Duda Con String's,como Parámetro¡
Publicado por: pacorubio77 en Domingo 13 de Abril de 2008, 22:03
No.no es exactamente eso..yo lo que quiero es utilizar como parámetro un string que provenga de otra función....como hago eso?
Título: Re: Duda Con String's,como Parámetro¡
Publicado por: Elforious en Lunes 14 de Abril de 2008, 00:08
Lo que se me ocurre en este momento, sería que declares a "nuevacadena" en el main y que le mandes "nuevacadena" por referencia a "FuncionExtraer" y así la podes usar, con los datos cambiados, en "Funcion2"...

Espero haber ayudado...
Título: Re: Duda Con String's,como Parámetro¡
Publicado por: diego.martinez en Martes 15 de Abril de 2008, 11:10
quizas el problema sea usar variables locales, localiza una nueva cadena con malloc y pasale el puntero a la nueva funcion.
Título: Re: Duda Con String's,como Parámetro¡
Publicado por: ProfesorX en Martes 15 de Abril de 2008, 20:14
A ver, examine un poco mas tu problema, y me parece que tal vez hay un error en tu logica, y te falta entender como maneja C/C++ las cadenas internamente.

En C/C++, todas las cadenas deben terminar con el caracter nulo '\0', las funciones de la libreria estandar de C/C++ esperan que la cadena termine con nulo, pues eso les indica en donde termina la cadena, si no encuentran el caracter nulo, siguen leyendo en la memoria hasta que encuentren el caracter nulo, con lo cual puedes obtener resultados inesperados si la cadena no termina en nulo.

Ahora bien, corrigeme si me equivoco, pero supongo que lo que tu tratas de hacer, es dividir la cadena en dos, tomando tu ejemplo quieres dividir "hola/adios" en dos, tomando solo el hola, y utilizando el caracter diagonal como separador, entonces si encuentras el separador, dejas de pasar el contenido de una cadena a la siguiente cadena. Eso esta muy bien, pero lo unico que te faltaria es terminar tu cadena con un nulo, para que el resto de las funciones sepan en donde termina tu cadena

Código: Text
  1.  
  2. void FuncionExtraer(){
  3. int i=0;
  4. while (cadena[i] !='/')
  5. nuevacadena[i]=cadena[i];
  6. i++;
  7. }
  8.  
  9. /// Con esto le indicas a C/C++ donde termina tu cadena
  10. nuevacadena[i] = '\0';
  11.  
  12.  

Ahora, si no es eso lo que quieres, explica con mas detalle.

Saludos :hola: