Holaquetal,
Después de meses sin tocar nada de C (tampoco es que supiera mucho por aquel entonces) y en un momento de aburrimiento, me he puesto a mirar algún ejemplo que tenía por ahí y, particularmente, una función para reemplazar strings en una cadena de texto. Recuerdo que había tenido algún problema y acabé cogiendo parte de código de algún sitio en internet, pero ahora al probarlo veo que sigue sin funcionar como debería y no sé qué coño pasa entre otras cosas porque no entiendo un par de lineas del código. Así que tras esta introducción que seguro que a nadie le interesaba, el Quid de la cuestión es:
¿Qué coño le falla a este código...
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *replace_str(char *str, char *orig, char *rep)
{
static char buffer[4096];
char *p;
if(!(p = strstr(str, orig))) // Is 'orig' even in 'str'?
return str;
strncpy(buffer, str, p-str); // Copy characters from 'str' start to 'orig' st$
buffer[p-str] = '\0';
sprintf(buffer+(p-str), "%s%s", rep, p+strlen(orig));
return replace_str(buffer, orig, rep);
}
int main(void)
{
puts(replace_str("Hello, world world!", "world", "holaquetal"));
system("pause");
return 0;
}
... para que el resultado sea: "Hello, holaquetal holaquetaluetal"?
Y por otro lado, si alguien es tan amable de explicarme qué coño hacen las líneas 14 y 16, Dios se lo pagará con fertilidad eterna. Gracias, besitos.