Naravno, počnimo sa člankom:
myFgets je jedna od osnovnih funkcija u C-u za dobijanje unosa od korisnika. To je dio stdio biblioteke i ističe se kao sigurnija alternativa svojim drugim kolegama kao što je scanf, zbog svoje sposobnosti da spriječi prelijevanje bafera.
#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; }
Nakon što započnemo sa kratkim uvodom o myFgets, gore navedeni C kod koristi funkciju myFgets za dobijanje unosa stringova od korisnika.
Kako funkcionira myFgets?
Funkcija fgets-a je da čita string sa standardnog ulaza (stdin), obično sa tastature. Funkcija fgets nije drugačija od ostalih ulaznih funkcija u C-u po svom zahtjevu za tri parametra: bafer za čitanje ulaza, maksimalnu veličinu bafera i ulazni tok iz kojeg se čita. Konkretno, nakon čitanja stringa, fgets dodaje nul karakter ('') na kraj.
Razumijevanje koda iznad
Gore definirana funkcija počinje deklariranjem stringa (niz znakova) određene veličine (SIZE). Zatim od korisnika traži da unese string. Nakon unosa korisnika, uslovni izraz provjerava da li je funkcija fgets mogla pročitati string. Ako je bio u mogućnosti, nastavlja sa ispisivanjem istog niza natrag na ekran koristeći funkciju puts.
U razumijevanju odnosa između fget-ova, veličine bafera i sprječavanja prelivanja bafera, važno je prepoznati da je broj znakova koje čita fgets manji od specificirane SIZE. Ovo se radi kako bi se prilagodio nulti znak na kraju unosa.
Relevantne biblioteke i funkcije
Što se tiče biblioteka, stdio.h je jedna od najosnovnijih biblioteka u C-u, koja se koristi za ulazno/izlazne operacije. Način upotrebe je jednostavan kao da ga uključite na početak C koda pomoću direktive #include.
Što se tiče funkcija koje se koriste u ovom kodu, fgets pripada ovoj biblioteci, zajedno sa puts i printf. Dok fgets istražuje, puts se koristi za pisanje stringa u stdout do, ali ne uključujući null karakter. Funkcija printf formira niz podataka za izlaz, na osnovu niza formata i argumenata.
Imajte na umu da za bezbedan i efikasan pristup unosu niza od korisnika, myFgets ima dokazane rezultate u domenu C programiranja, ograničavajući veličinu ulaza i na taj način sprečavajući potencijalno prekoračenje bafera.