Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Sanlegas en 11 Julio 2010, 00:50 am



Título: Convertir char[] a char *[] ?
Publicado por: Sanlegas en 11 Julio 2010, 00:50 am
Que tal, hace unos dias que empeze con c++ y ahora me puse a crear mi primera función que es para recortar una cadena... digamos asi:

funcion("Prueba",1,3) = "Pru"

bueno hize este codigo

Código:
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
int funcion( char * cadena[], int start,int length);



main()
{

char palabra[10]= "Prueba";



cout <<  funcion(palabra,1,3);


return 0;
}

int funcion( char * cadena[], int start,int length)
{
char * tmp;

for (int n = start -1;n<start - length;n++)
{
strcat(tmp,cadena[n]);
}

return atoi(tmp);
}

pero al compilar me marca este error
Citar
'funcion' : cannot convert parameter 1 from 'char [10]' to 'char *[]'
que no se puede convertir... ya eh intentado de modificar la funcion pero me marca error en el strcat  :-\, espero puedan ayudarme, gracias de antemano  :laugh:


Título: Re: Convertir char[] a char *[] ?
Publicado por: cbug en 11 Julio 2010, 00:58 am
Supongo que es en el cout... Y creo que se debe a que debes usar el operador &

Código:
cout <<  funcion(&palabra,1,3);.


Título: Re: Convertir char[] a char *[] ?
Publicado por: leogtz en 11 Julio 2010, 01:01 am
-
Código:
funcion("Prueba",1,3) = "Pru"

Entonces deberías de cambiar el prototipo de tu función a esto:

Código:
char *funcion(char *string, int start, int final);

-include <iostream.h>

El nuevo estandard dice que no es necesaria la extensión h para las cabeceras. Si tu compilador no te alerta es que está obsoleto y debes cambiarlo.

Estás trabajando con C++(realmente no sé si C++ o C, parece un híbrido), deberías de tenerlo así:

Código:
#include <iostream>
#include <cstring>
#include <cstdlib>

Código:
char * tmp;
No le asignas espacio en memoria.

Código:
strcat(tmp,cadena[n]);
Código:
char * strcat ( char * destination, const char * source );

No concuerda, tu estás tratando de agregar un caracter.

Hay una función miembro en la clase string que hace exactamente lo que quieres:

Código
  1. std::string palabra("Prueba");
  2.    std::cout << palabra.substr(0, 3) << std::endl;
  3.  
Saludos.