Bueno supongo que esto pasa porque strlen() devuelve unsigned int y lo estoy asignando a variables tipo int... Aquí lo modifiqué:
char *strreplace(const char * str, const char * find, const char * replace){
unsigned int i,j,k,pos, val, size, oldsize, cont;
int flag;
char * nstr
= (char*)malloc(bytes
+1);
flag = 1;
val = i;
k = 0;
// unsigned int z = (i+strlen(find)-1);
for(j
=i
; j
<=(i
+strlen(find
)-1); j
++){ if(find[k] != str[j])
flag = 0;
k++;
}
if(flag != 0)
pos = val;
}
size
= pos
+ strlen(replace
) - 1; cont = 0;
j = 0;
for(i=0;i<=bytes-1;i++){
if(i>=pos && i<=size){
nstr[i] = replace[cont];
cont++;
if(i==size)
j=oldsize;
} else {
nstr[i] = str[j];
j++;
}
}
return nstr;
}