Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

13.4.1 Valmiit funktiot VAARALLISIA

Vinkki
A

ÄLÄ LUOTA

valmiisiin merkkijonofunktioihin

Merkkijonojen lukeminen on eräs C- kielen vaarallisimpia operaatioita. Seuraavan malliesimerkin takia merkkijonot on aina luettava käyttäen jotakin itse tehtyä turvallista funktiota. Funktiot scanf ja gets pitää unohtaa.

Funktiolla fgets jono voidaan lukea turvallisesti, koska fgetsille viedään parametrinä jonon maksimipituus:

	fgets(jono,max_pituus,tiedosto) 

Haittana on kuitenkin se, että jonon loppuun jää '\n'-merkki. Tämä ongelma on poistettu kappaleen lopussa esitetyssä malliohjelmassa.

Seuraava ohjelma on erittäin vaarallinen:

c-taul\jonovaar.c - esimerkki tilan ylityksestä päätesyötössä

	#include <stdio.h>
	
	char jono1[5]="";
	int  i=0;
	char jono2[5]="Kana";
	
	int main(void)
	{
	  printf("Anna merkkijono>");
	  scanf("%s",jono1); 	:-(
	  printf("|%s| %x |%s|\n",jono1,i,jono2);
	  return 0;
	}

Tehtävä 13.124 Kanahaukka

Jos edelliselle ohjelmalle syötetään "Kanahaukka", niin se tulostaa:
|Kanahaukka| 7561 |kka|
Miksi?

Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys