Scanf C ua haujlwm piav qhia
Scanf C ua haujlwm piav qhia

Video: Scanf C ua haujlwm piav qhia

Video: Scanf C ua haujlwm piav qhia
Video: Tshuaj theem vim li cas thiaj tau nqi ?/ Siv kho mob dab tsi?/paris polyphylla use for? 2024, Tej zaum
Anonim

Nyob rau hauv tsab xov xwm no, lub scanf() muaj nuj nqi yog xam nyob rau hauv ib tug dav daim ntawv tsis siv rau ib tug tshwj xeeb tus qauv, yog li cov ntaub ntawv los ntawm ib tug C99, C11, C ++ 11, C ++ 14 cov qauv muaj nyob ntawm no. Tej zaum, hauv qee cov qauv, cov haujlwm ua haujlwm nrog qhov sib txawv ntawm cov khoom uas tau nthuav tawm hauv kab lus.

scanf C muaj nuj nqi - piav qhia

scanf() yog ib txoj haujlwm nyob rau hauv stdio.h(C) thiab cstdio(C++) header files, tseem hu ua formatted program input. scanf nyeem cov cim los ntawm tus qauv nkag kwj (stdin) thiab hloov lawv raws li hom ntawv, tom qab ntawd sau lawv mus rau qhov hloov pauv tau teev tseg. Hom ntawv - txhais tau hais tias cov ntaub ntawv hloov dua siab tshiab rau ib daim ntawv thaum tau txais. Yog li, scanf C ua haujlwm tau piav qhia:

scanf("%format", &variable1[, &variable2, […]), qhov twg qhov hloov pauv tau dhau los ua qhov chaw nyob. Yog vim li cas rau txoj kev no ntawm kev sib txawv ntawm qhov sib txawv mus rau ib qho kev ua haujlwm yog pom tseeb: raws li kev ua haujlwm, nws rov qab tus nqi qhia tias muaj qhov yuam kev, yog litib txoj hauv kev los hloov cov txiaj ntsig ntawm qhov hloov pauv yog dhau los ntawm qhov chaw nyob. Tsis tas li, ua tsaug rau txoj kev no, cov haujlwm tuaj yeem ua cov ntaub ntawv ntawm txhua hom.

Qee tus programmers xa mus rau cov haujlwm xws li scanf() lossis printf() ua cov txheej txheem vim yog kev sib piv nrog lwm hom lus.

Scanf tso cai nkag rau txhua hom lus yooj yim: char, int, ntab, hlua, thiab lwm yam. Nyob rau hauv cov ntaub ntawv ntawm qhov sib txawv ntawm hom hlua, tsis tas yuav qhia qhov chaw nyob kos npe - "&", vim qhov sib txawv ntawm hom hlua yog ib qho array, thiab nws lub npe yog qhov chaw nyob ntawm thawj lub ntsiab ntawm cov array hauv lub computer nco..

Siv C hauv C++
Siv C hauv C++

Cov ntaub ntawv nkag hom lossis tswj txoj hlua

Pib los ntawm kev saib scanf C ua piv txwv los ntawm cov lus piav qhia.


suav nrog int main() { int x; while (scanf("%d", &x)==1) printf("%d\n", x); rov 0; //requirement for linux systems }

Cov tswv yim tawm tswv yim muaj plaub yam hauv qab no: %[dav][modifiers] hom. Hauv qhov no, "%" kos npe thiab hom yog qhov yuav tsum tau ua. Ntawd yog, yam tsawg kawg nkaus zoo li no: "%s", "%d" thiab lwm yam.

Feem ntau, cov cim uas tsim cov kab ntawv faib ua:

  • hom ntawv tshwj xeeb - txhua yam pib nrog %;
  • cais lossis qhov chaw cim - lawv yog qhov chaw, tab(t), kab tshiab (n);
  • cim tsis yog qhov chaw dawb.

Function tej zaum yuav tsis muaj kev nyab xeeb.

Siv scanf_s() hloov scanf().

(message from Visual Studio)

Type, lossis hom ntawv tshwj xeeb, lossis cov cim hloov pauv, lossis tswj cov cim

binary code
binary code

A scanf C tshaj tawm yuav tsum muaj tsawg kawg yog ib hom ntawv tshwj xeeb, uas tau teev nyob rau qhov kawg ntawm cov kab lus pib nrog "%". Nws qhia qhov kev pab cuam hom ntaub ntawv xav tau thaum nkag mus, feem ntau yog los ntawm cov keyboard. Daim ntawv teev npe ntawm txhua hom kev qhia tshwj xeeb hauv cov lus hauv qab no.

Type

Meaning

1 %c Qhov kev zov me nyuam tab tom tos tus cim nkag. Qhov sib txawv uas yuav tsum tau sau yuav tsum yog tus cim hom char.
2 %d Qhov kev zov me nyuam xav tau cov tswv yim ntawm tus lej lej ntawm tus lej. Qhov sib txawv yuav tsum yog hom int.
3 %i Qhov kev zov me nyuam xav tau cov tswv yim ntawm tus lej lej ntawm tus lej. Qhov sib txawv yuav tsum yog hom int.
4 %e, %E Qhov kev zov me nyuam xav kom nkag mus rau qhov taw qhia ntab (comma) tus lej hauv daim ntawv exponential. Qhov sib txawv yuav tsum yog hom ntab.
5 %f Qhov kev zov me nyuam xav kom tus lej taw tes ntab (comma). Qhov sib txawv yuav tsum yog hom ntab.
6 %g, %G Qhov kev zov me nyuam xav kom tus lej taw tes ntab (comma). Qhov sib txawv yuav tsum yog hom ntab.
7 %a Qhov kev zov me nyuam xav kom tus lej taw tes ntab (comma). Qhov sib txawv yuav tsum yog hom ntab.
8 %o Qhov kev zov me nyuam xav tau tus lej thib kaum. Qhov sib txawv yuav tsum yog hom int.
9 %s Qhov kev pab cuam tos kom nkag mus. Ib txoj hlua yog ib txheej ntawm cov cim mus txog rau thawj cov cim cais tau ntsib. Qhov sib txawv yuav tsum yog hom hlua.
10 %x, %X Qhov kev zov me nyuam tab tom tos tus lej hexadecimal. Qhov sib txawv yuav tsum yog hom int.
11 %p Variable cia siab tias tus taw qhia nkag. Qhov sib txawv yuav tsum yog hom pointer.
12 %n

Sau rau qhov sib txawv ntawm tus nqi sib npaug sib npaug ntawm cov cim nyeem kom deb li deb los ntawm kev ua haujlwm scanf.

13 %u Qhov kev pab cuam nyeem ib tus lej tsis tau kos npe. Hom sib txawv yuav tsum yog tus lej tsis tau kos npe.
14 %b Qhov kev zov me nyuam tos tus lej binary. Qhov sib txawv yuav tsum yog hom int.
15 % Scanned cim teeb. Qhov kev zov me nyuam tab tom tos cov cim nkag.los ntawm cov pas dej tsawg uas teev nyob nruab nrab ntawm cov square brackets. scanf yuav ua haujlwm ntev li ntev tau muaj cov cim los ntawm cov txheej txheem teev tseg ntawm cov kwj nkag.
16 %% Sign "%".

Tus cwj pwm hauv txoj hlua

C++ code
C++ code

hnub qub cim ()

Lub hnub qub () yog tus chij qhia tias kev ua haujlwm yuav tsum raug txwv. Ib lub hnub qub muab tso rau tam sim tom qab kos npe "%". Piv txwv li,


scanf("%d%c%d", &x, &y); // tsis quav ntsej tus cwj pwm ntawm ob tus lej. scanf("%s%d%s", str, str2); // ignore integer ntawm ob txoj hlua.

Ntawd yog, yog tias koj nkag mus rau kab "45-20" hauv lub console, qhov kev zov me nyuam yuav ua cov hauv qab no:

  1. Variable "x" yuav muab tus nqi 45.
  2. Variable "y" yuav muab tus nqi 20.
  3. Thiab qhov kos npe rho tawm (dash) "-" yuav raug tsis quav ntsej ua tsaug rau "%c".

Dav (lossis qhov dav dav)

Nov yog tus lej nruab nrab ntawm "%" kos npe thiab tus qauv tshwj xeeb uas qhia txog tus lej siab tshaj plaws los nyeem hauv kev nyeem tam sim no.


scanf("%20s", str); // nyeem thawj 20 tus cim los ntawm kev nkag mus

Muaj ob peb yam tseem ceeb uas yuav tsum nco ntsoov:

  1. scanf yuav xaus yog tias nws ntsib tus cim cais, txawm tias nws tsis suav 20 tus cim.
  2. Yog tias muaj ntau tshaj 20 tus cim nkag, tsuas yog thawj 20 tus cim yuav raug sau rau str.

Hloov khohom (los yog precision)

txp code
txp code

Cov no yog cov chij tshwj xeeb uas hloov kho hom ntaub ntawv xav tau rau kev tawm tswv yim. Tus chij tau teev tseg rau sab laug ntawm hom specifier:

  • L lossis l (L me) Thaum "l" siv nrog cov cim tshwj xeeb d, i, o, u, x, tus chij qhia qhov kev pab cuam uas xav tau ntev int input. Thaum siv "l" nrog tus e lossis f specifier, tus chij qhia rau qhov kev zov me nyuam tias nws yuav tsum tau txais tus nqi ob npaug. Kev siv "L" qhia txog qhov kev zov me nyuam uas xav tau ob npaug ntev. Kev siv "l" nrog rau "c" thiab "s" specifiers qhia qhov kev zov me nyuam tias ob-byte cim zoo li wchar_t xav tau. Piv txwv li, "%lc", "%ls", "%l[asd]".
  • h yog tus chij qhia hom luv.
  • hh - qhia tias qhov sib txawv yog tus taw qhia rau tus lej kos npe lossis tus nqi tsis tau kos npe. Tus chij yuav siv tau nrog cov specifiers d, i, o, u, x, n.
  • ll (ob L's me) - qhia tias qhov sib txawv yog tus taw tes rau tus nqi ntawm hom kos npe ntev ntev int lossis tsis kos npe ntev ntev int. Tus chij yog siv nrog specifiers: d, i, o, u, x, n.
  • j - qhia tias qhov sib txawv yog tus taw tes rau intmax_t lossis uintmax_t hom los ntawm cov ntaub ntawv stdint.h header. Siv nrog specifiers: d, i, o, u, x, n.
  • z - qhia tias qhov sib txawv yog tus taw tes rau hom size_t, lub ntsiab lus uas yog nyob rau hauv stddef.h. Siv nrog specifiers: d, i, o, u, x, n.
  • t - qhia tias qhov sib txawv yog tus taw tes rau hom ptrdiff_t. Lus txhais rauhom no yog nyob rau hauv stddef.h. Siv nrog specifiers: d, i, o, u, x, n.

Ntau kom meej meej, daim duab nrog cov hloov pauv tuaj yeem sawv cev ua lub rooj. Xws li cov lus piav qhia ntawm scanf C rau programmers yuav pom tseeb dua.

Hom Specifiers thiab Modifiers
Hom Specifiers thiab Modifiers

Lwm tus cim

Txhua tus cim tau ntsib hauv hom yuav raug muab pov tseg. Nyob rau tib lub sijhawm, nws yuav tsum raug sau tseg tias qhov muaj qhov chaw dawb lossis cov cim cais (kab tshiab, qhov chaw, tab) hauv txoj hlua tswj tuaj yeem ua rau muaj kev sib txawv ntawm kev ua haujlwm. Hauv ib lub version, scanf() yuav nyeem yam tsis tau txuag tus lej ntawm cov cais kom txog thaum nws ntsib tus cwj pwm uas tsis yog tus cais, thiab hauv lwm lub version, qhov chaw (tsuas yog lawv) tsis ua lub luag haujlwm thiab cov lus qhia "%d + %d" yog sib npaug rau "%d+%d".

C++ code piv txwv
C++ code piv txwv

Examples

Cia peb saib qee qhov piv txwv los pab koj xav thiab nkag siab zoo dua qhov haujlwm ua haujlwm li cas.


scanf("%3s", str); // yog tias koj nkag mus rau txoj hlua "1d2s3d1;3" hauv lub console, tsuas yog "1d2" yuav raug sau rau str scanf("%dminus%d", &x, &y); // rho tawm cov cim ntawm ob tus lej yuav raug muab pov tseg scanf("% 5[0-9]", str); // cov cim yuav nkag mus rau hauv str kom txog thaum muaj 5 tus cim thiab cov cim yog cov lej ntawm 0 txog 9. scanf("%lf", &d); // cia siab tias ob lub tswv yim scanf("%hd", &x); // xav paub tus naj npawb ntawm hom luv scanf("%hu", &y); // cia siab tias tsis tau kos npe luv scanf("lx", &z); // xav paub tus naj npawb ntawm hom ntev int

Los ntawmCov piv txwv hauv qab no qhia tias tus lej xav tau hloov pauv li cas siv cov cim sib txawv.

scanf C - piav qhia rau cov pib tshiab

tshooj no yuav pab tau rau cov pib tshiab. Feem ntau koj yuav tsum muaj ntawm tes tsis yog ntau qhov kev piav qhia ntawm scanf C raws li cov ntsiab lus ntawm kev ua haujlwm li cas.

  • Qhov no yog qhov tsis siv lawm. Muaj ntau ntau qhov kev siv sib txawv hauv cov tsev qiv ntawv sib txawv. Piv txwv li, kev txhim kho scanf S C muaj nuj nqi, cov lus piav qhia uas tuaj yeem pom ntawm lub vev xaib microsoft.
  • Tus naj npawb ntawm cov cim tshwj xeeb hauv hom yuav tsum phim tus lej ntawm cov lus sib cav dhau mus rau txoj haujlwm.
  • Cov ntsiab lus kwj nkag yuav tsum raug cais los ntawm cov cim cais: qhov chaw, tab, kab tshiab. Comma, semicolon, lub sij hawm, thiab lwm yam - cov cim no tsis yog cais rau lub scanf() function.
  • Yog scanf ntsib tus cim cais, cov tswv yim yuav raug tso tseg. Yog tias muaj ntau dua ib qho kev hloov pauv los nyeem, ces scanf yuav txav mus rau kev nyeem qhov hloov pauv tom ntej.
  • Qhov tsis sib xws me ntsis hauv cov ntaub ntawv tawm tswv yim ua rau cov txiaj ntsig tsis tau tshwm sim ntawm qhov program. Zoo, yog tias qhov kev zov me nyuam tsuas yog xaus nrog qhov yuam kev. Tab sis feem ntau qhov kev zov me nyuam tseem ua haujlwm thiab ua tsis yog.
  • scanf("%20s…", …); Yog tias cov kwj nkag siab tshaj 20 tus cim, ces scanf yuav nyeem thawj 20 tus cim thiab rho tawm lossis txav mus rau kev nyeem cov hloov pauv tom ntej, yog tias ib qho tau teev tseg. Hauv qhov no, kev hu xov tooj tom ntej mus rau scanf yuav txuas ntxiv nyeem cov kwj nkag los ntawm qhov chaw ua haujlwm ntawm kev hu dhau los rau scanf nres. Yog thaum nyeem thawj 20cov cim, tus cim delimiter tau ntsib, scanf yuav rho tawm lossis txuas ntxiv nyeem qhov hloov pauv tom ntej, txawm tias nws tsis tau nyeem 20 cim rau thawj qhov sib txawv. Hauv qhov no, tag nrho cov cim tsis tau nyeem yuav raug txuas mus rau qhov hloov pauv tom ntej.
  • Yog tias cov txheej txheem scanned pib nrog "^", ces scanf yuav nyeem cov ntaub ntawv kom txog thaum nws ntsib tus cim delimiter lossis tus cim los ntawm cov txheej txheem. Piv txwv li, "%[^A-E1-5]" yuav nyeem cov ntaub ntawv los ntawm cov kwj deg kom txog rau thaum ib qho ntawm cov ntawv Askiv loj ntawm A txog E lossis ib tus lej ntawm 1 txog 5 tau ntsib.
  • Lub scanf C muaj nuj nqi, raws li tau piav qhia, xa rov qab tus lej sib npaug rau tus lej ua tiav ntawm kev sau rau qhov sib txawv. Yog tias scanf sau 3 qhov sib txawv, ces qhov kev ua tiav ntawm kev ua haujlwm yuav rov qab tus lej 3. Yog tias scanf tsis tuaj yeem sau cov hloov pauv, ces qhov tshwm sim yuav yog 0. Thiab, thaum kawg, yog scanf tsis tuaj yeem pib txhua yam vim qee yam, Cov txiaj ntsig yuav yog EOF.
  • Yog qhov kev ua haujlwm scanf() xaus tsis raug. Piv txwv li, scanf("%d", &x) - yuav tsum muaj tus lej, tab sis cov cim tau txais raws li kev nkag. Kev hu xov tooj tom ntej scanf() yuav pib ntawm qhov taw tes hauv cov kwj tawm uas qhov kev hu xov tooj dhau los lawm. Yuav kom kov yeej qhov teeb meem no, nws yog ib qho tsim nyog kom tshem tawm cov teeb meem cim. Qhov no tuaj yeem ua tau, piv txwv li, los ntawm kev hu rau scanf("%s"). Ntawd yog, txoj haujlwm yuav nyeem ib txoj hlua ntawm cov cim thiab muab pov tseg. Hauv txoj kev nyuaj no, koj tuaj yeem nkag mus rau cov ntaub ntawv tsim nyog.
  • Nyob rau hauv qee qhov kev siv ntawm scanf(), "-" tsis raug tso cai hauv cov cim scanned.
  • Tus "%c" tus qhia txog nyeem txhua tus cim los ntawm tus kwj deg. Ntawd yog, nws kuj nyeem cov cim cais. Txhawm rau hla tus cim delimiter thiab txuas ntxiv nyeem cov cim xav tau, koj tuaj yeem siv "% 1s".
  • Thaum siv tus "c" specifier, nws tso cai rau siv qhov dav "% 10c", tab sis tom qab ntawd ib qho ntawm cov ntsiab lus ntawm hom char yuav tsum dhau los ua qhov sib txawv rau qhov kev ua haujlwm scanf.
  • "%[a-z]" txhais tau tias "tag nrho cov ntawv me ntawm cov tsiaj ntawv Askiv", thiab "%[z-a]" txhais tau tias tsuas yog 3 cim: 'z', 'a', '-'. Hauv lwm lo lus, tus cim "-" txhais tau hais tias muaj ntau yam tsuas yog tias nws nyob nruab nrab ntawm ob lub cim uas yog qhov tseeb. Yog tias "-" yog qhov kawg ntawm qhov kev qhia, thaum pib, lossis hauv qhov kev txiav txim tsis raug ntawm cov cim ntawm ob sab ntawm lawv, ces nws tsuas yog tus cwj pwm hyphen, tsis yog ntau yam.
C++ code
C++ code

Zaj lus

Qhov no xaus cov lus piav qhia ntawm scanf C. Qhov no yog ib qho khoom siv zoo rau kev ua haujlwm hauv cov haujlwm me me thiab thaum siv cov txheej txheem kev ua haujlwm. Txawm li cas los xij, qhov tsis zoo tseem ceeb yog tus lej ntawm qhov tsis tuaj yeem ua tiav uas tuaj yeem tshwm sim thaum siv scanf. Yog li ntawd, cov lus piav qhia ntawm scanf C thaum programming yog qhov zoo tshaj plaws khaws cia nyob rau hauv pem hauv ntej ntawm koj ob lub qhov muag. Hauv cov haujlwm loj tshaj lij, iostreams tau siv, vim tias lawv muaj peev xwm siab dua, lawv muaj peev xwm ntes tau thiab daws qhov yuam kev, thiab tseem ua haujlwm nrog cov ntaub ntawv tseem ceeb. Nws yuav tsum tau muab sau tseg tias cov lus piav qhia ntawm scanf C nyob rau hauv Lavxias teb sab muaj nyob rau hauv ntau lub network qhov chaw, nrog rau cov piv txwv ntawm nws.siv, vim muaj hnub nyoog ntawm kev ua haujlwm. Yog li ntawd, yog tias tsim nyog, koj tuaj yeem pom cov lus teb ntawm lub rooj sab laj thematic.

Pom zoo: