Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

13.3.2 memmove

Mikäli kopioinnin kohde ja lähde ovat päällekkäin, saattaa kopiointi tuottaa yllätyksiä. Jos jonot olisivat esimerkiksi seuraavasti

	                           +-----jono2
	jono1                      v
	  |      0  1  2  3  4  5  0  1  2  3  4  5 
	  |    +-----------------------------------+ 
	  +--->|4B|69|73|73|61|00|6B|61|6E|61|00|??|
	       +-----------------------------------+
	        K  i  s  s  a  NULk  a  n  a  NUL    

ja tavoitteena olisi siirtää Kissa merkkijonoa 3 pykälää vasemmalle sekä muuttaa kana muotoon kkana, voitaisiin kuvitella tämän tapahtuvan

	strcpy(jono1,jono1+3);
	strcpy(jono2+1,jono2); 

Yleensä käyttöjärjestelmästä riippuen ainakin toinen edellisistä sekoaa. Ainoa turvallinen tapa tehdä em. temppuja on memmove, jonka taataan toimivan vaikka lähde ja kohde olisivat osittain päällekkäinkin.

	memmove(jono1,jono1+3,strlen(jono1+3)+1);
	memmove(jono2+1,jono2,strlen(jono2)+1); 


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys