formatting i o printf
Ta vadnica obravnava uporabo in primere funkcij, kot so printf, sprintf, scanf, ki se uporabljajo za oblikovanje vhoda / izhoda v jeziku C ++:
V naših prejšnjih vajah za C ++ smo videli, da lahko v C ++ izvajamo vhodno-izhodne operacije s pomočjo cin / cout.
Poleg uporabe teh konstrukcij lahko uporabimo tudi knjižnico C. Z uporabo knjižnice C Standard Input and Output Library (cstdio, ekvivalent C ++ za glavo stdio.h v jeziku C) izvajamo V / I operacije z uporabo »tokov«, ki delujejo s fizičnimi napravami, kot so tipkovnice (standardni vhod), tiskalniki, terminali (standardni izhod) ) ali katere koli druge vrste datotek, ki jih podpira operacijski sistem.
=> Tukaj preverite vadnice za globoko učenje C ++.
Potoki niso nič drugega kot abstraktna entiteta, ki se uporablja za enotno interakcijo s fizičnimi napravami. Vsi tokovi imajo podobne značilnosti in so neodvisni od fizičnih medijskih naprav.
V naslednjih temah v tej vadnici bomo podrobno izvedeli nekaj funkcij, npr. Printf, sprint in scanf.
Kaj se boste naučili:
- C ++ printf
- C ++ sprintf
- C ++ scanf
- scanf / printf Vs. cin / cout V jeziku C ++
- Pogosto zastavljena vprašanja
- Zaključek
C ++ printf
Funkcija printf v jeziku C ++ se uporablja za zapis izhoda, ki je formatiran v stdout.
Prototip funkcije:
int printf (format const char *,…);
Parametri:
format => Kazalec na niz, ki se konča z ničem, zapisan v tok datoteke. Sestavljen je iz znakov in izbirnega specifikatorja formata, ki se začne z%. Specifikator formata se nadomesti z ustreznimi vrednostmi, ki sledijo nizu oblike.
… => Drugi dodatni argumenti, ki določajo podatke za tiskanje v vrstnem redu, v katerem je navedena oblika.
Vrnjena vrednost:
najboljša programska oprema vm za Windows 10
Uspeh => printf vrne število vrnjenih znakov.
Napaka => Negativna vrednost
Opis:
Funkcija printf je definirana v glavi. Funkcije printf zapisujejo niz, na katerega kaže kazalec “format”, na standardni izhodni stdout. Niz oblike lahko vsebuje specifikatorje formata, ki jih nato nadomestijo spremenljivke, posredovane funkciji printf kot dodatni argumenti (za nizom formata).
Format Specifier, uporabljen v funkciji printf ()
Splošna oblika specifikatorja oblike je
%[flags][width][.precision][length]specifier
Spodaj je opis vsakega od delov specifikatorja formata:
- znak%: To je vodilni znak%
- Zastave: Imajo lahko naslednje vrednosti:
- -: Levo utemelji rezultat znotraj polja. Privzeto desno utemeljeno.
- +: Znak rezultata, pritrjen na začetek vrednosti, vključno s pozitivnimi rezultati.
- Presledek: Če znaka ni, je presledek pritrjen na začetek rezultata.
- #: Navedite drugo obliko pretvorbe.
- 0: Uporablja se za celoštevilčna in števila s plavajočo vejico. V pomanjkanju prostora delujte kot vodilni ničli.
- Premer: Podaja najmanjšo širino polja v obliki * ali celoštevilčne vrednosti. To ni obvezno.
- Natančnost: Določi natančnost z., Čemur sledi * ali celo število ali nič. To je tudi neobvezno.
- Dolžina: Izbirni argument, ki je določil velikost argumenta.
- Specifikator: To je specifikator oblike pretvorbe.
V C ++ so uporabljeni različni označevalniki oblike:
Ne | Specifikator | Opis |
---|---|---|
7. | u | Pretvori nešteto celo število v decimalno predstavitev. |
eno | % | Natisne%. |
dva | c | Natisne en znak. |
3. | s | Natisne niz. |
4. | d / i | Pretvori podpisano celo število v decimalno predstavitev. |
5. | ali | Pretvori nešteto celo število v osmiško predstavitev. |
6. | x / X | Pretvori nepodpisano celo število v šestnajstiško predstavitev. |
8. | f / ž | Pretvori število s plavajočo vejico v decimalno predstavitev. |
9. | in / E | Pretvori število s plavajočo vejico v zapis decimalnega eksponenta. |
10. | a / A | Pretvori število s plavajočo vejico v šestnajstiški eksponent. |
enajst | g / G | Pretvori število s plavajočo vejico v decimalni ali decimalni zapis eksponenta. |
12. | n | Število doslej napisanih znakov s to funkcijo. |
13. | str | Kazalec, ki kaže na zaporedje znakov, določeno z izvedbo. |
Spodaj je celoten primer programiranja za C ++, ki prikazuje zgoraj obravnavano funkcijo printf.
Primer C ++ printf
#include //C++ printf example int main() { char ch = 'A'; float a = 8.0, b = 3.0; double d = 3.142; int x = 20; printf('float division : %.3f / %.3f = %.3f
', a,b,a/b); printf('Double value: %.4f
', d); printf('Setting width %*c
',4,ch); printf('Octal equivalent of %d is %o
',x,x); printf('Hex equivalent of %d is %x
',x,x); return 0; }
Izhod:
Zgornji program uporablja različne klice funkcije printf in ugotavljamo, da vsak klic printf uporablja različne specifikatorje formata, ki smo jih obravnavali zgoraj. Specifikator oblike% .3f označuje plavajočo vrednost z največ 3 decimalnimi mesti. V preostalih klicih printf so prikazane znakovne, decimalne, osmiške in šestnajstiške vrednosti.
C ++ sprintf
Funkcija Sprintf v jeziku C ++ je podobna funkciji printf, razen z eno razliko. Namesto da zapisuje izhod v standardni izhodni stdout, sprintf zapiše izhod v medpomnilnik niza znakov.
Prototip funkcije:
int sprintf (medpomnilnik char *, format const char *,…)
Parametri:
medpomnilnik => Kazalec na medpomnilnik niza, v katerega naj bo zapisan rezultat.
Oblika => Kazalec na niz, ki se konča z ničem, ki je zapisan v tok datotek.
Opomba: Formatni niz, uporabljen v funkciji sprintf, je enak tistemu, ki je bil obravnavan kot del opisa funkcije printf.
… => Drugi dodatni argumenti, ki določajo podatke za tiskanje v vrstnem redu, v katerem je navedena oblika.
Vrnjena vrednost:
uspeh => Vrne število znakov, zapisanih v dovolj velik vmesni pomnilnik, razen zaključnega ničelnega znaka.
Napaka => Vrnjena je negativna vrednost.
Opis:
Funkcija Sprintf je definirana v glavi. Funkcija sprintf se uporablja za zapis niza, ki ga format kaže na medpomnilnik niza. Format niza lahko vsebuje specifikatorje formatov, ki se začnejo z%, ki jih nadomestijo vrednosti spremenljivk, ki se posredujejo funkciji sprintf () kot dodatni argumenti.
Oglejmo si primer programa C ++, ki prikazuje uporabo funkcije sprintf.
Primer sprintf
#include #include using namespace std; int main() { char mybuf[100]; int retVal; char name[] = 'Software Testing Help'; char topic[] = 'C++ tutorials'; retVal = sprintf(mybuf, 'Hi, this is %s and you are reading %s !!', name, topic); cout << mybuf << endl; cout << 'Number of characters written = ' << retVal << endl; return 0; }
Izhod:
V zgornjem primeru najprej s pomočjo funkcije sprintf v medpomnilnik znakov mybuf zapišemo formatiran niz. Nato niz prikažemo v stdout s pomočjo cout. Na koncu prikažemo število znakov, zapisanih v medpomnilnik mybuf.
C ++ scanf
Funkcija scanf v jeziku C ++ bere vhodne podatke s standardnega vhodnega stdina.
Prototip funkcije:
int scanf (format const char *,…)
Parametri:
format => Kazalec na niz, ki se konča z ničem, ki določa način branja vnosa. Ta niz oblike je sestavljen iz specifikatorjev formata.
… => Dodatni argumenti za vnos podatkov. Ti dodatni argumenti so v zaporedju glede na specifikator oblike.
Vrnjena vrednost:
uspeh => Vrne število prebranih znakov.
matchingFailure => Vrne nič, če pride do napake pri ujemanju, preden je dodeljen prvi argument, ki prejme.
vhodna napaka => Vrne EOF, če pride do napake vnosa, preden je dodeljen prvi sprejemni argument.
Opis:
Funkcija Scanf () je definirana v glavi. Ta funkcija bere podatke iz stdina in shranjuje v podane spremenljivke.
Format Specifier, uporabljen v funkciji scanf ()
Splošna oblika za niz oblike zapisa scanf () je:
%[*][width][length]specifier
Tako ima specifikator formata naslednje dele:
- Znak, ki ni presledek: To so znaki, razen%, ki porabijo enak znak iz vhodnega toka.
- Presledek: Vsi zaporedni presledki se štejejo za en presledek. Enako velja za zaporedja pobega.
- Specifikacija pretvorbe: Ima naslednjo obliko:
- %: Znak, ki določa začetek.
- *: Klican znak, ki zatira znak. Če je prisoten, scanf rezultatom ne dodeli nobenega sprejemnega parametra. Ta parameter ni obvezen.
- Širina polja: Izbirni parameter (pozitivno celo število), ki določa največjo širino polja.
- Dolžina: Določa velikost prejema argumenta.
Specifikacija oblike pretvorbe je lahko naslednja:
Ne | Specifikator formata | Opis |
---|---|---|
7. | x / X | Ujema se z nepodpisanim šestnajstiškim celim številom. |
eno | % | Ujema se dobesedno%. |
dva | c | Ujema se z enim ali več znaki do širine. |
3. | s | Ujema se z zaporedjem nebelih presledkov do določene širine ali prvega presledka. |
4. | d | Ujema se z decimalno številko. |
5. | jaz | Ujema se s celim številom. |
6. | ali | Ujema se z nepodpisanim osmiško celico. |
8. | u | Ujema se z nepodpisanim decimalnim celim številom. |
9. | a / A, e / E, f / F, g / G | Ujema se s številko s plavajočo vejico. |
10. | [set] | Ujema se z nepraznim zaporedjem znakov iz danega nabora. Če je pred ^, se ujemajo znaki, ki niso v naboru. |
12. | n | Vrne število doslej prebranih znakov. |
13. | str | Kazalec na zaporedje znakov, specifično za izvedbo. |
Nato bomo izvedli vzorčni program za prikaz uporabe funkcije scanf v jeziku C ++
Primer scanf
#include int main () { char str [80], pos_str[80]; int i; printf ('Enter your company name: '); scanf ('%79s',str); printf ('Enter your position: '); scanf ('%s',pos_str); printf ('You work at %s as %s.
',str,pos_str); printf ('Enter a hexadecimal number: '); scanf ('%x',&i); printf ('You have entered %#x (%d).
',i,i); return 0; }
Izhod:
V zgornjem programu smo prebrali dva vhodna niza in šestnajstiško število. Nato združimo dva niza in prikažemo nastali niz. Število se pretvori v decimalno in prikaže.
scanf / printf Vs. cin / cout V jeziku C ++
scanf / printf | cin / strošek |
---|---|
Standardni vhod-izhod v jeziku C. | Standardni vhod-izhod v jeziku C ++. |
Določeno v 'stdio.h'. | Opredeljeno v „iostream“. |
scanf in printf sta funkcija, ki se uporablja za V / I. | cin in cout sta predmeta v toku. |
Niz formatiranja se uporablja za formatiranje vhoda in izhoda. | Operaterji >> in<< are overloaded and used along with cin and cout respectively. Ne uporablja se noben formatni niz. |
Vrsto podatkov določimo z uporabo držala mesta. | Ni treba določiti vrste podatkov. |
Pogosto zastavljena vprašanja
V # 1) Ali lahko uporabite printf v jeziku C ++?
Odgovor: Da. Printf se lahko uporablja v jeziku C ++. Za uporabo te funkcije v programu C ++ moramo v program vključiti glavo.
V # 2) Kateri jezik uporablja printf?
Odgovor: Printf je standardna izhodna funkcija v jeziku C. Uporablja se lahko tudi v jeziku C ++ z vključitvijo glave v program C ++.
V # 3) Kaj je% d pri programiranju na C?
Odgovor: Vrednost% d v funkciji printf se nanaša na celoštevilčno vrednost.
V # 4) Zakaj se & uporablja v Scanf?
Odgovor: & operator se uporablja za dostop do mesta v pomnilniku. Okrajšava je, da se spremenljivki posreduje kazalec, namesto da bi ga posredovali izrecno.
V # 5) Kakšna je razlika med printf () in sprintf ()?
Odgovor: Funkciji printf () in sprintf () sta enaki, razen ene razlike. Medtem ko printf () zapisuje izhod v stdout (standardni izhod), sprintf zapisuje izhod v medpomnilnik niza znakov.
V # 6) Ali Sprintf null preneha?
Odgovor: sprintf vrne število znakov, shranjenih v nizu znakovnih nizov, razen ničelnega zaključnega znaka.
V # 7) Zakaj sprintf ni varen?
Odgovor: Funkcija Sprintf ne preveri dolžine ciljnega vmesnega pomnilnika. Kadar je dolžina niza oblike predolga, lahko funkcija povzroči prelivanje ciljnega vmesnega pomnilnika. To lahko privede do težav z nestabilnostjo in varnostjo aplikacij, zaradi česar funkcija sprintf postane varna.
Zaključek
V tej vadnici smo se naučili vhodno-izhodnih funkcij knjižnice C - printf, sprintf in scanf, ki jih lahko uporabljamo v jeziku C ++ z vključitvijo glave, ki je enakovredna glavi C.
Kot smo že omenili, vhodno-izhodne funkcije uporabljajo označevalnike formatov in imetnike mest, zato moramo določiti tipe podatkov spremenljivk, v katere se podatki berejo ali zapisujejo.
V nasprotju s tem predmeti za pretakanje, ki se uporabljajo v C ++ - cin in cout, ne uporabljajo nobenih specifikatorjev oblike ali ograd. Uporabljajo preobremenjene >> in<< operators to read in and write the data.
=> Tukaj si oglejte Perfect Guide za usposabljanje za C ++.
Priporočeno branje
- Funkcije niza Python
- Datumske funkcije VBScript: funkcije oblike zapisa datuma, dodajanja datuma in datuma cDate
- Spremenljivke in funkcije JMeter
- Python funkcije
- Knjižnične funkcije v C ++
- Funkcije skripta lupine Unix s parametri in vrnitvijo
- Datum in čas v C ++ z primeri
- Prijateljske funkcije v C ++