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];
strcpy(mirray
, recursiva
("array ", 3));
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)