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
#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:
Supongo que es en el cout... Y creo que se debe a que debes usar el operador &
cout << funcion(&palabra,1,3);.
-funcion("Prueba",1,3) = "Pru"
Entonces deberías de cambiar el prototipo de tu función a esto:
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í:
#include <iostream>
#include <cstring>
#include <cstdlib>
char * tmp;
No le asignas espacio en memoria.
strcat(tmp,cadena[n]);
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:
std::string palabra("Prueba");
std::cout << palabra.substr(0, 3) << std::endl;
Saludos.