logo

Разлика између принтф() и сцанф() у Ц

Увод:

Принтф() и Сцанф() су уграђене библиотечке функције у језику Ц које обављају форматирани унос и форматирани излаз функције. Ове функције су дефинисане и декларисане у стдио.х заглавни фајл . Тхе 'ф' ин принтф и сцанф означава 'форматирано' . Дакле, обе функције принтф() и сцанф() користите кодове унутар низа формата да одредите како треба форматирати излазне или улазне вредности. Морамо да увеземо датотеку заглавља да бисмо је користили принтф() и сцанф() :

 #include 

У овом чланку ћемо разговарати о разлици између принтф() и сцанф(), али пре него што разговарамо о разликама, морамо знати о принтф() и сцанф() са њиховом синтаксом и примерима.

Принтф():

То отисци било шта између двоструки наводници са спецификације формата %ц, %д,%ф, итд., да прикаже вредност променљиве или константе и такође може имати знакове излазне секвенце као што су н, т за Нова линија, и хоризонтални језичак , редом.

басх читај датотеку

Синтакса:

 printf('(string) %format_specifier (string)',variable); 

Сцанф():

Омогућава нам да прочитамо једну или више вредности које је корисник унео преко тастатуре на конзоли. Можемо поставити исто толико спецификације формата онолико уноса које желимо са или без формата.

Синтакса:

 scanf(%format_specifier, &pointer_to_variable); 

Стринг специфицатора формата:

У првом параметру од принтф и сцанф , пролазимо формат стринг или стринг спецификације формата , и специфицирамо коју врсту вредности ће корисник унети.

Тип података Конверзија формат стринг
Интегер кратки цео број %д или % и
кратко без потписа % ин
давно потписан % лд
дуго непотписан % лу
хексадецимални без предзнака % Икс
неозначени октал
Прави пловак % ф или % г
дупло %лф
потписани лик
унсигнед цхар
низ

На пример, ако корисник уђе двадесет као улаз, као двадесет је децимална целобројна вредност , специфицирамо све децималне целобројне вредности у Ц користећи %д спецификација формата . Слично, флоат вредности специфицирају се помоћу .

Основни код за Принтф() и Сцанф():

Пример 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; } 

Излаз:

 Please enter the two values:8 6 The sum = 14 sub = 2 mul = 48 

Објашњење:

У горњем програму користимо сцанф() да прочитате унос са конзоле и сачувате их у променљивим а & б. Након тога изводимо аритметичке операције као додатак , одузимање , и множење а касније резултате похранити у три нове варијабле (Сум, Суб, Мул). Коначно, коришћењем функција принтф(). , штампамо резултате.

Пример 2:-

 #include int main() { int a; scanf('%d %d', &a); printf('Execution finished...'); return 0; } 

У горњем програму, сцанф() чита два улаза из програма иако прослеђујемо једну променљиву јер смо навели два спецификација формата . Увек запамтите, Ин сцанф()/принтф() све спецификације формата које прослеђујемо требало би да буду исти, иначе можемо добити неке неочекиване грешке у извршавању.

Пример 3:

 int main() { int a, b; scanf('%d', &a, &b); printf('Execution finished...'); return 0; } 

Излаз:

 5 Execution finished... 

Објашњење:

беллфорд алгоритам

У горњем програму, сцанф() чита само један унос од корисника јер смо навели само један спецификација формата . Дакле, из овог примера закључујемо да ниједан од улаза неће бити узет у зависности од броја спецификације формата .

Пример 4:

 #include int main() { int a; scanf('%d', a); printf('Execution finished'); } 

Излаз:

 6 Segmentation fault 

Објашњење:

У горњем програму прослеђујемо вредност променљиве у сцанф() уместо адресе променљиве. То ће довести до а грешка у раду . У Линук-у ћемо добити грешку сегментације.

иф-елсе изјава јава

Пример 5:

 #include int main() { int a = 10; int b = 20; printf('the value of a = %d, the value of b = %d', a, b); } 

Излаз:

 the value of a = 10, the value of b = 20 

Објашњење:

У горњем програму, када принтф скенира стринг формата, он ће заменити спецификације формата (%д) са стварним вредностима на које прелазимо принтф() . тј., први специфицатор формата ће бити замењен првом вредношћу коју проследимо принтф(), и тако даље.

Основне разлике између Принтф() и Сцанф()

Неколико разлика између принтф-а и сцанф-а су: -

    функција принтф(). шаље податке на стандардни излаз, односно на конзолу. Насупрот томе, тхе функција сцанф(). чита податке са стандардног улаза, односно улазних уређаја принтф() ретко користи показивач у неколико случајева, али сцанф() увек користи показивач да додели вредност датој променљивој. принтф() и сцанф() оба имају исти тип враћања цео број . Тхе принтф() враћа број знакова које је успешно одштампао на конзоли, док сцанф() враћа 0,1 или ЕОФ на основу специфицираног формата.