Toki aloitetaan artikkelista:
myFgets on yksi C:n perustoiminnoista syötteiden saamiseksi käyttäjältä. Se on osa stdio-kirjastoa ja erottuu turvallisempana vaihtoehtona muille vastineilleen, kuten scanf, koska se pystyy estämään puskurin ylivuodon.
#include <stdio.h>
#define SIZE 100
int main()
{
char str[SIZE];
printf("Enter a string: ");
if(fgets(str, SIZE, stdin) != NULL)
{
printf("You entered: ");
puts(str);
}
return 0;
}
Kun aloitat lyhyellä myFgets-esittelyllä, yllä oleva C-koodi käyttää myFgets-toimintoa saadakseen merkkijonon syötteen käyttäjältä.
Miten myFgets toimii?
Fgets:n tehtävänä on lukea merkkijono vakiosyötteestä (stdin), yleensä näppäimistöltä. Fgets-funktio ei eroa muista C:n syötefunktioista kolmen parametrin vaatimuksessa: puskuri syötteen lukemiseen, puskurin enimmäiskoko ja syöttövirta, josta luetaan. Tarkemmin sanottuna merkkijonon lukemisen jälkeen fgets lisää nollamerkin ('') loppuun.
Yllä olevan koodin ymmärtäminen
Yllä määritelty funktio alkaa ilmoittamalla tietynkokoisen merkkijonon (SIZE). Sitten se kehottaa käyttäjää syöttämään merkkijonon. Kun käyttäjä syöttää, ehdollinen lauseke tarkistaa, pystyikö fgets-funktio lukemaan merkkijonon. Jos se pystyi, se tulostaa saman merkkijonon takaisin näytölle puts-toiminnolla.
Ymmärtääkseen fgetien, puskurin koon ja puskurin ylivuodon välisen suhteen on tärkeää huomata, että fgets:n lukemien merkkien määrä on yksi pienempi kuin määritetty KOKO. Tämä tehdään syötteen lopussa olevan nolla-merkin mukauttamiseksi.
Asiaankuuluvat kirjastot ja toiminnot
Mitä tulee kirjastoihin, stdio.h on yksi C:n peruskirjastoista, jota käytetään syöttö-/tulostustoimintoihin. Käyttötapa on yhtä yksinkertainen kuin sen lisääminen C-koodin alkuun #include-ohjeella.
Mitä tulee tässä koodissa käytettyihin toimintoihin, fgets kuuluu tähän kirjastoon puts- ja printf:n ohella. Kun fgets tutkii, putsia käytetään stdout-merkkijonon kirjoittamiseen nollamerkkiin asti, mutta ei sisällä. Funktio printf muodostaa datamerkkijonon tulostetta varten muotomerkkijonon ja argumenttien perusteella.
Huomaa, että myFgetsillä on todistetusti C-ohjelmoinnin alalla turvallinen ja tehokas tapa syöttää syöttömerkkijonoja, koska se rajoittaa syötteen kokoa ja estää siten mahdolliset puskurin ylivuodot.