Kluczowa różnica – scanf vs gets
Funkcja to zestaw instrukcji do wykonania określonego zadania. Bez pisania wszystkich instrukcji w tym samym programie można go podzielić na wiele funkcji. W programowaniu użytkownik może definiować własne funkcje. Istnieją również funkcje dostarczane przez języki programowania. Język C udostępnia szereg funkcji, dzięki czemu programista może z nich korzystać bezpośrednio bez implementowania ich od początku. Dwie takie funkcje dostarczane przez język C to scanf i gets. W tym artykule omówiono różnicę między tymi dwiema funkcjami. Kluczową różnicą między scanf a gets jest to, że scanf kończy pobieranie danych wejściowych po napotkaniu białego znaku, nowej linii lub końca pliku (EOF), podczas gdy gets traktuje biały znak jako część ciągu wejściowego i kończy dane wejściowe po napotkaniu nowej linii lub EOF.
Co to jest scanf?
Funkcja scanf może odczytywać dane wejściowe z klawiatury i przechowywać je zgodnie z podanym specyfikatorem formatu. Odczytuje dane wejściowe do momentu napotkania spacji, nowej linii lub EOF. Składnia jest następująca.
scanf("ciąg formatu", lista adresów zmiennych);
Odnieś się do przykładu podanego poniżej, aby zrozumieć scanf.
Rysunek 01: scanf z jednym wejściem
Zgodnie z powyższym programem, dane wejściowe z klawiatury są liczbą całkowitą, więc specyfikatorem formatu jest %d. Jeśli pobiera wartość znakową, specyfikatorem formatu jest %c. W przypadku pobierania wartości zmiennoprzecinkowej specyfikator formatu to %f. Otrzymana wartość wejściowa powinna być przechowywana w zmiennej liczbowej. Dlatego adres zmiennej numer jest przekazywany do funkcji scanf. Teraz zmienna number zawiera wartość podaną przez użytkownika z klawiatury. Na koniec możemy wydrukować zmienną liczbową, aby sprawdzić wartość.
Możliwe jest również otrzymywanie więcej niż jednej wartości na raz.
Rysunek 02: skanowanie z wieloma wejściami
Odebrane dane wejściowe są przechowywane w zmiennej numer1 i numer2. Wartości można sprawdzić za pomocą printf.
Co dostajesz?
Funkcja gets służy do odbierania danych wejściowych z klawiatury, aż do napotkania nowej linii lub EOF. Biała spacja jest uważana za część danych wejściowych. Składnia funkcji gets jest następująca.
gets(„gdzie przechowywać ciąg”);
Jeśli wystąpi błąd podczas odbierania ciągu, funkcja gets zwróci wartość null.
Odnieś się do poniższego przykładu,
Rysunek 03: dostaje
Wejście jest odbierane przez funkcję gets i przechowywane w zmiennej word1. Jeśli programista użył scanf zamiast pobierać i wprowadzać ciąg, taki jak „hello world”, scanf odczyta ciąg jako dwa ciągi ze względu na białe znaki. Ale gets odczyta go jako jeden ciąg „hello world”.
Jakie są podobieństwa między scanf a gets?
- Oba są funkcjami dostarczanymi przez język programowania C.
- Oba powinny zawierać plik nagłówkowy stdio.h, aby używać tych funkcji.
- Oba mogą być użyte do uzyskania danych wejściowych ze standardowego wejścia.
Jaka jest różnica między scanf a gets?
skanuj kontra pobiera |
|
scanf to funkcja C, która odczytuje dane wejściowe ze standardowego wejścia, aż do napotkania spacji, nowej linii lub EOF. | gets to funkcja C, która odczytuje wejście ze standardowego wejścia aż do napotkania znaku nowej linii lub znaku EOF. Uważa białe znaki za część danych wejściowych. |
Składnia | |
Funkcja scanf pobiera ciąg formatujący i listę adresów zmiennych. np. scanf(„%d”, &number); | Funkcja gets pobiera nazwę zmiennej do przechowywania otrzymanej wartości. Np. pobiera(nazwa); |
Elastyczność | |
scanf może odczytywać wiele wartości różnych typów danych. | gets() otrzyma tylko dane ciągu znaków. |
Podsumowanie – scanf vs gets
scanf i gets to funkcje dostarczane przez język programowania C. Użytkownik nie musi implementować tych funkcji od początku. Mogą bezpośrednio używać ich w swoich programach. Różnica między scanf i gets polega na tym, że scanf kończy pobieranie danych wejściowych po napotkaniu białego znaku, nowej linii lub End Of File (EOF) i gets traktuje biały znak jako część ciągu wejściowego i kończy dane wejściowe po napotkaniu nowej linii lub EOF. Używanie scanf lub gets zależy od sposobu odbierania danych wejściowych użytkownika ze standardowego wejścia, którym przez większość czasu jest klawiatura. scanf jest bardziej elastyczny niż gets.
Pobierz wersję PDF scanf vs gets
Możesz pobrać wersję PDF tego artykułu i używać jej do celów offline zgodnie z notatką cytowania. Proszę pobrać wersję PDF tutaj Różnica między scanf a gets