Ključna razlika – scanf vs gets
Funkcija je skup izjava za izvođenje određenog zadatka. Bez pisanja svih izjava u istom programu, može se podijeliti na više funkcija. U programiranju korisnik može definirati vlastite funkcije. Postoje i funkcije koje pružaju programski jezici. C jezik nudi niz funkcija, tako da ih programer može koristiti izravno bez implementacije od početka. Dvije takve funkcije koje nudi C jezik su scanf i gets. Ovaj članak govori o razlici između ove dvije funkcije. Ključna razlika između scanf i gets je u tome što scanf završava unosom kada naiđe na razmak, novi red ili kraj datoteke (EOF), dok gets smatra razmak dijelom ulaznog niza i završava unos kada naiđe na novi red ili EOF.
Što je scanf?
Funkcija scanf može pročitati unose s tipkovnice i pohraniti ih prema zadanom specifikatoru formata. Čita unos dok ne naiđe na razmak, novi red ili EOF. Sintaksa je sljedeća.
scanf(“format string”, popis adresa varijabli);
Pogledajte donji primjer da biste razumjeli scanf.
Slika 01: scanf s jednim unosom
Prema gornjem programu, unos s tipkovnice je cijeli broj, tako da je specifikator formata %d. Ako dobiva vrijednost znaka, specifikator formata je %c. Ako se dobije vrijednost s pomičnim zarezom, specifikator formata je %f. Primljenu ulaznu vrijednost treba pohraniti u varijablu broj. Stoga se adresa varijable broj prosljeđuje u funkciju scanf. Sada brojčana varijabla sadrži vrijednost koju korisnik daje s tipkovnice. Konačno, možemo ispisati varijablu broja da provjerimo vrijednost.
Također je moguće primiti više od jedne vrijednosti odjednom.
Slika 02: scanf s više ulaza
Primljeni ulazi pohranjeni su u varijablu broj1 i broj2. Vrijednosti se mogu provjeriti korištenjem printf.
Što se dobiva?
gets funkcija koristi se za primanje unosa s tipkovnice dok se ne naiđe na novi red ili EOF. Razmak se smatra dijelom unosa. Sintaksa za gets funkciju je sljedeća.
gets(“gdje pohraniti niz”);
Ako dođe do pogreške prilikom primanja niza, gets funkcija će vratiti nultu vrijednost.
Pogledajte donji primjer,
Slika 03: dobiva
Ulaz prima gets funkcija i pohranjuje u varijabli word1. Ako je programer koristio scanf umjesto gets i unosa niza kao što je "hello world", scanf će čitati niz kao dva niza zbog razmaka. Ali gets će to pročitati kao jedan niz "hello world".
Koje su sličnosti između scanf i gets?
- Obje su funkcije koje pruža C programski jezik.
- Oboje trebaju uključivati datoteku zaglavlja stdio.h za korištenje ovih funkcija.
- Oboje se može koristiti za dobivanje unosa sa standardnog ulaza.
Koja je razlika između scanf i gets?
scanf vs gets |
|
scanf je C funkcija za čitanje unosa sa standardnog unosa sve dok ne naiđete na razmak, novi red ili EOF. | gets je C funkcija za čitanje unosa sa standardnog unosa dok se ne naiđe na novi red ili EOF. Razmake smatra dijelom unosa. |
Sintaksa | |
scanf funkcija uzima niz formata i popis adresa varijabli. npr. scanf(“%d”, &broj); | gets funkcija uzima naziv varijable za pohranu primljene vrijednosti. npr. dobiva(ime); |
Fleksibilnost | |
scanf može čitati više vrijednosti različitih vrsta podataka. | gets() će dobiti samo podatke niza znakova. |
Sažetak – scanf vs gets
scanf i gets su funkcije koje pruža programski jezik C. Korisnik ne mora implementirati ove funkcije od početka. Mogu ih izravno koristiti u svojim programima. Razlika između scanf i gets je u tome što scanf završava unosom nakon što naiđe na razmak, novi red ili kraj datoteke (EOF), a gets smatra razmak dijelom ulaznog niza i završava unos nakon što naiđe na novi red ili EOF. Korištenje scanf ili gets ovisi o načinu primanja korisničkog unosa sa standardnog unosa koji je većinu vremena tipkovnica. scanf je fleksibilniji nego gets.
Preuzmite PDF verziju scanf vs gets
Možete preuzeti PDF verziju ovog članka i koristiti ga za izvanmrežne svrhe prema napomeni o citatu. Ovdje preuzmite PDF verziju Razlika između scanf i gets