Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem funkce replace v C

Zdravim,
potrebuji funkci replace v C, napsal jsem si ji nasledovne:

//nahradi v "radka" retezec "stary" "novym"
void replace(char *kde, char *co, char *cim){
	//	printf("REPLACE\n");
	char *kopie = zkopiruj(kde), *pom;
	int nova_delka = strlen(kde) - strlen(co) + strlen(cim);
	if(nova_delka > strlen(kde)){
		pom = (char *) realloc(kde, sizeof(char) * (nova_delka+1));
		kde = pom;
	}
	char *p = strstr(kopie, co);
	strcpy(kde+(p-kopie),cim);
	strcpy(kde+(p-kopie)+strlen(cim),p+strlen(co));
	uvolni(kopie);
}
Funguje to, jenze valgrind mi vraci chybu na radce s funkci realloc, jejiz syntaxe by mela byt spravna. Melo by se jednat o nepovoleny pristup do pameti pri pozdejsi praci s retezcem, na ktery ukazuje pointer kde, ale at si to kontroluju jak si to kontroluju, nemuzu prijit na to, kde je chyba.
Alokovany blok zvetsuji pouze kdyz vim, ze je potreba vice pameti, ze nahrada puvodniho podretezce je delsi, jakmile je nova_delka mensi nez puvodni, velikost pameti nezmensuji.
Je funkce napsana spravne?
Dekuju!

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny