Scanf at fgets

Anonim

Scanf vs fgets

Scanf at fgets ay dalawang karaniwang ginagamit na function ng mga parirala sa C programming at kung saan ay sa pamamagitan ng oras na ipinatupad sa iba pang mga wika programming. Ang Scanf ay tumutukoy sa mga format ng Scan. Ang Scanf ay nakatuon sa pag-input ng mga wastong mga token at binabase nito ang mga ito depende sa tinukoy na format. Ang pagtuon sa kanilang mga pagkakaiba sa pagpapatupad at ang mga code na kanilang hawak ay nakakatulong sa pangkalahatang pagpapatupad ng buong proseso ay isang mahusay na paraan upang mabigyan ang pananaw ng mga pagkakaiba sa pagitan ng dalawa. Ang Fgets ay, sa kabilang banda, isang pag-andar ng library ng C na kumalat mula pa nang umpisa upang magamit sa ibang mga aklatan.

Ang paggamit ng mga fget ay nasisiraan ng loob sa modernong araw na programming, dahil ito ay naiwan sa mga pamantayan ng C89 at C99 na nagpapahintulot sa pabalik na pagkakatugma. Gayunpaman, ang paggamit ng mga fget ay dapat na maayos na matugunan upang matiyak na ang pangkalahatang mga resulta ay mga code na maaaring tumakbo. Ang programmer na gumagamit ng fgets ay dapat na malaman ang maximum na itaas na limitasyon ng bilang ng mga character na kinakailangan upang payagan ang sapat na buffer. Ito ay isang mahirap na hamon na walang naunang kaalaman sa data. Ito ay mula sa disenyo na ang isang gate na nagbibigay-daan para sa pagsasamantala ng seguridad ng computer ay ibinigay sa kaganapan ng isang buffer overflow. Para sa dahilan sa itaas, ang mga bagong programa ay hindi inirerekomenda na gamitin ang mga fgets.

Ang pag-scan ng function ay nagbabalik ng lahat ng magagamit na mga item na tumutugma. Mahalagang tandaan na hindi lahat ng oras ay makakakuha ka ng pantay na bilang ng mga bagay na hiniling. Ang mga item ay maaaring mas mababa kaysa sa mga hiniling. Sa kaganapan ng isang stream na naubos, isang error sa EOF ay ibinigay. Ang parehong sitwasyong ito ay makikita din kapag nabigo ang pagbabasa bago ang isang pagtutugma ng anumang mga item ay tapos na. Ang pag-scan ng function pagkatapos ibabalik ang kabuuang bilang ng mga matagumpay na katugma na mga item, na kung saan ay maaaring mas mababa kaysa sa mga hiniling ng numero.

Ang isa pang pagkakaiba ng sumbrero ay nakikita sa pagitan ng mga fgets at scanf kasama ang posibilidad ng mga fgets na mabasa mula sa isang ibinigay na file, kung bukas ito. Ang pagbabasa lamang ay nagbabasa mula sa mga karaniwang input, hindi anumang file. Mahalaga din na tandaan na ang mga fense ay nagbabasa lamang ng isang linya ng teksto sa isang naibigay na oras mula sa isang file. Sa kabilang panig, ang Scanf ay maaaring magbasa ng teksto ng isang linya sa isang pagkakataon, ngunit nagbibigay din ito ng mga handle ng mga conversion sa mga numerong uri, na nagmumula sa mga uri ng string. Ang mga Fgets ay sa karamihan ng mga kaso na ginagamit upang basahin ang isang ibinigay na linya ng data samantalang ang scanf ay ginagamit para sa pagkakatay ng data.

Ang isa pang bagay na lumalabas bilang isang pagkakaiba ay ang scanf ay hindi nagsasagawa ng mga pag-check ng hangganan, habang ang mga fget ay nagbibigay ng isang mas mahusay na pagpipilian na maaaring pahintulutan para sa pagsusuri ay tapos na. Maaaring gamitin ang scanf upang suriin ang mga hangganan pagkatapos na siniyasat ng mga fgets.

Ang isa pang mahalagang bagay na dapat tandaan ay ang scanf ay naghahanap ng isang tiyak na pattern na tinukoy sa loob ng format na argumento sa isang partikular na input. Ang input na ito ay tinukoy bilang stdin. Ang ibinigay na input sa kasong ito ay maaaring string file, depende sa variant na ginamit. Sa kabilang panig, ang mga Fense ay partikular na nagbabasa ng isang linya mula sa file at ini-kopya ito sa output ng buffer. Sa pangkalahatan, maaari itong sabihin na ang scanf ay hindi nagmumula sa anumang mga limitasyon sa tiyak na bilang ng mga character na maaaring mabasa sa default na paggamit. Mayroong pinakamaraming bilang ng mga character na maaaring basahin ang mga Fense.

Buod

Ang Scanf ay tumutukoy sa mga format ng Scan. Ang Scanf ay naka-focus sa input ng mga wastong mga token. Sinusuri ng Scanf ang mga input depende sa tinukoy na format. Fgets ay isang function ng C. Ang Scanf ay nagbabasa lamang mula sa karaniwang mga input. Binabasa lamang ng Fgets ang isang linya ng teksto sa isang naibigay na oras mula sa isang file. Ang Scanf ay hindi gumanap ng mga hangganan.