Bueno este programa tiene varios tipos de problemas, ya que no puedo mostrar por paantalla la extraccion de subcadena o asignar en otra variable y mostrarla en pantalla seguidamente lo mas cercano uqe logre fue que despues de ingresar algo por teclado me muestre la subcadena exraida.
Use cin >> ws; pero, la verdad no tengo idea porque pasa esto.
#include <iostream> //Sorry
#include <stdlib.h> //por
#include <string.h>// las
#include <stdio.h> //librerias
using namespace std;
char* subcadena(char* cadena, int inicial, int final);
int main(){
char materia[]="PROGRAMACION ESTRUCTURADA";
cin >> ws;
cout << subcadena(materia,0,11) << endl;
system("pause");
}
char* subcadena(char *cadena, int inicial, int final)
{
char *substring;
int indice=0;
if(inicial<0 || final>strlen(cadena)){
return NULL;
}
else{
for(int i=inicial;i<=final;i++){
substring[indice]=cadena[i];
indice++;
}
return substring;
}
}
Alguna respuesta puntual? Muchas gracias ;-)
string cadena = "PROGRAMACION ESTRUCTURADA";
cout << cadena.substr(0, 11) << endl;
Si por algún motivo no puedes usar std::string.substr()
La funcion tiene que hacer una copia de los datos que recibe, y actualmente el puntero substring no apunta a nada.
Si pidieras memoria y los asignaras al puntero substring, la funcion tendra un mejor comportamiento.
Tal vez algo como:
char* substring = new char[final-inicial+1] podria ayudar.
Faltaria posiblemente poner un '\0' al final.