Hola, queria comentarles una duda que tengo sobre una funcion
recursiva usando una cadena.
Array.h
Código C++:
Ver original
#include <string.h> #include <iostream> #include <stdlib.h> int long_string(char arr[]) { int i = 0; while (arr[i] != '\0') i++; return i; } char *cnt_str(char *dat1, char *dat2) { int max_long = long_string(dat1) + long_string(dat2); char *buffer = new char[max_long*sizeof(char)]; int x=0,z=0; while (dat1[x] != '\0') buffer[x] = dat1[x++]; while (dat2[z] != '\0') buffer[x++] = dat2[z++]; buffer[x] = '\0'; return buffer; }
main.cpp
Código C++:
Ver original
#include <time.h> #include <string.h> #include <iostream> #include "Arrays.h" using namespace std; char *recursiva(char* dato, int veces) { if (veces == 1) return dato; veces--; return cnt_str(dato, recursiva(dato, veces)); } int main(int argc, char *argv[]) { char *mirray = new char[512]; cout << "Recursiva: " << mirray << endl; char *texto = cnt_str("Probando ", " union de strings"); return 1; }
Asi como esta el codigo anda genial, el problema es cuando quiero hacer mas de 3 recursiones (veces), cuando cambio el parametro veces por mas de 4, da error el programa y se sale.
Supongo que hay algun problema con las dimensiones en las funcion de cnt_str.
Gracias por leer y tomarse el tiempo de ayudar a los demas D:
(sobre todo gracias a ti sam90, admiro tu forma prolija y eficiente de programar)