Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

13.3.3 strcat ja strncat

Merkkijonojen liittämiseen on funktiot strcat ja strncat. Esimerkiksi:

	char jono1[10],jono2[6];
	...
	strcpy(jono1,"Kissa");
	strcpy(jono2," on!");
	
	                                       +-----jono2
	jono1                                  v
	  |      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
	  |    +-----------------------------------------------+ 
	  +--->|4B|69|73|73|61|00|??|??|??|??|20|6F|6E|21|00|??|
	       +-----------------------------------------------+
	        K  i  s  s  a  NUL               o  n  !  NUL
	
	strcat(jono1,jono2);
	
	                                       +-----jono2
	jono1                                  v
	  |      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
	  |    +-----------------------------------------------+ 
	  +--->|4B|69|73|73|61|20|6F|6E|21|00|20|6F|6E|21|00|??|
	       +-----------------------------------------------+
	        K  i  s  s  a     o  n  !  NUL   o  n  !  NUL

Funktiossa strcat on sama vaara kuin strcpyssäkin. Vaaraa voidaan osittain välttää strncat kutsulla, muistaen kuitenkin, että pituutena annetaan lisättävien merkkien maksimimäärä ( NUL mukaan lukien, joka strncatin tapauksessa laitetaan), EI tuloksen maksimikoko. Siis turvallinen muoto olisi:

	strncat(jono1,jono2,10- (strlen(jono1)+1)); 

Tehtävä 13.121 liita_jono

Kirjoita aliohjelma
int liita_jono(char *tulos, int max_koko, const char *jono)
joka liittää merkkijonon jono jonon tulos perään, muttei ylitä tulos- jonon maksimipituutta max_pit. tulos- jono loppuu aina NUL-merkkiin. Funktio palauttaa 0 mikäli liittäminen onnistuu täysin ja muuten jonkin muun arvon.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys