Wstęp:
Drukujf() I Skanuj() to wbudowane funkcje biblioteczne w języku C, które działają sformatowane wejście I sformatowane wyjście Funkcje. Funkcje te są zdefiniowane i zadeklarowane w plik nagłówkowy stdio.h . The 'F' W drukuj I skanf oznacza „sformatowany” . A więc obie funkcje printf() I skanf() użyj kodów w ciągu formatującym, aby określić, w jaki sposób powinny być formatowane wartości wyjściowe lub wejściowe. Musimy zaimportować plik nagłówkowy, aby go użyć printf() I skanf() :
#include
W tym artykule omówimy różnicę między printf() i scanf(), ale zanim omówimy różnice, musimy poznać funkcje printf() i scanf() wraz z ich składnią i przykładami.
Drukujf():
To drukuje cokolwiek pomiędzy podwójne cudzysłowy z specyfikatory formatu %c, %d,%f, itp., aby pokazać wartość zmiennej lub stałej i może również zawierać znaki sekwencji ucieczki, takie jak , Do Nowa linia, I zakładka pozioma odpowiednio.
pandy tworzące ramkę danych
Składnia:
printf('(string) %format_specifier (string)',variable);
Skanuj():
Pozwala na odczytanie jednej lub wielu wartości wprowadzonych przez użytkownika za pomocą klawiatury na konsoli. Możemy umieścić dowolną liczbę specyfikatory formatu tyle danych wejściowych, ile chcemy, z formatem lub bez.
Składnia:
scanf(%format_specifier, &pointer_to_variable);
Ciąg specyfikatora formatu:
W pierwszym parametrze drukuj I skanf , zdajemy ciąg formatujący Lub ciąg specyfikatora formatu , i określamy, jakiego rodzaju wartość zamierza wprowadzić użytkownik.
Typ danych | Konwersja | ciąg formatujący |
---|---|---|
Liczba całkowita | krótka liczba całkowita | %d lub %i |
krótki, niepodpisany | % W | |
dawno podpisany | % ld | |
dawno niepodpisany | % lu | |
szesnastkowy bez znaku | % X | |
ósemkowa bez znaku | %O | |
Prawdziwy | platforma | % f lub % g |
podwójnie | %lf | |
podpisany znak | %C | |
znak bez znaku | %C | |
strunowy | %S |
Na przykład, jeśli użytkownik wejdzie 20 jako wejście, jako 20 jest dziesiętna wartość całkowita , określamy wszystkie dziesiętne wartości całkowite w C za pomocą Specyfikator formatu %d . Podobnie, wartości pływające są określone za pomocą %F .
Podstawowy kod funkcji Printf() i Scanf():
Przykład 1:
#include int main() { int a, b; int sum = 0, sub = 0, mul = 0; printf('Please enter the two values:'); /* Read input */ scanf('%d%d', &a, &b); sum = a+b; sub = a-b; mul = a*b; /* Print output */ printf('The sum = %d sub = %d mul = %d', sum, sub, mul); return 0; }
Wyjście:
Please enter the two values:8 6 The sum = 14 sub = 2 mul = 48
Wyjaśnienie:
W powyższym programie używamy skanf() odczytać dane wejściowe z konsoli i zapisać je w zmiennych a i b. Następnie wykonujemy operacje arytmetyczne, takie jak dodatek , odejmowanie , I mnożenie i później zapisz wyniki w pliku trzy nowe zmienne (Sum, Sub, Mul). Wreszcie za pomocą funkcja printf(). , drukujemy wyniki.
Przykład 2:-
#include int main() { int a; scanf('%d %d', &a); printf('Execution finished...'); return 0; }
W powyższym programie skanf() odczytuje dwa wejścia z programu, mimo że przekazujemy jedną zmienną, ponieważ ją określiliśmy dwa specyfikatory formatu . Zawsze pamiętaj, In scanf()/printf() wszystkie specyfikatory formatu które przekazujemy, powinny być takie same, w przeciwnym razie mogą pojawić się nieoczekiwane błędy w czasie wykonywania.
Przykład 3:
int main() { int a, b; scanf('%d', &a, &b); printf('Execution finished...'); return 0; }
Wyjście:
mrówka kontra maven
5 Execution finished...
Wyjaśnienie:
W powyższym programie skanf() czyta tylko jedno wejście od użytkownika, ponieważ określiliśmy tylko jeden specyfikator formatu . Z tego przykładu wnioskujemy, że żadne dane wejściowe nie zostaną pobrane w zależności od liczby specyfikatory formatu .
Przykład 4:
#include int main() { int a; scanf('%d', a); printf('Execution finished'); }
Wyjście:
6 Segmentation fault
Wyjaśnienie:
W powyższym programie przekazujemy wartość zmiennej do skanf() zamiast adresu zmiennej. Doprowadzi to do błąd czasu wykonania . W systemie Linux otrzymamy błąd błędu segmentacji.
pothineni baran
Przykład 5:
#include int main() { int a = 10; int b = 20; printf('the value of a = %d, the value of b = %d', a, b); }
Wyjście:
the value of a = 10, the value of b = 20
Wyjaśnienie:
W powyższym programie, kiedy drukuj skanuje ciąg formatujący, zastąpi on specyfikatory formatu (%d) z rzeczywistymi wartościami, do których przekazujemy printf() . oznacza to, że pierwszy specyfikator formatu zostanie zastąpiony pierwszą wartością, którą przekazujemy printf(), i tak dalej.
Podstawowe różnice między Printf() i Scanf()
Kilka różnic między printf i scanf to: -