previous next Up Title Contents Index

13.4.1 Valmiit funktiot VAARALLISIA


Vinkki

Ä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 parametrina 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?


previous next Up Title Contents Index