Problemas luego de crear una funcion que "extrae" subcadenas

Iniciado por Beginner Web, 9 Julio 2018, 23:48 PM

0 Miembros y 1 Visitante están viendo este tema.

Beginner Web

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.

Código (cpp) [Seleccionar]
#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  ;-)
7w7

ThunderCls

#1
Código (cpp) [Seleccionar]
string cadena = "PROGRAMACION ESTRUCTURADA";
cout << cadena.substr(0, 11) << endl;


Si por algún motivo no puedes usar std::string.substr()


-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

CalgaryCorpus

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.
Aqui mi perfil en LinkedIn, invitame un cafe aqui