Monday 30 October 2017

Printf Format Koder Binære Alternativer


printf og scanf format codes. number med opptil seks sifre med presisjon, vitenskapelig notasjon. Footnot I printf, forventes uttrykkstype kampanjer - i et uttrykk blir karbon og kort konvertert til int, og float konverteres til dobbelt således c egentlig tilsvarer en parameter av typen int og f og g svarer faktisk til parametere av type dobbelt. I printf er det ingen forskjell mellom f og lf, eller mellom g og lg. I scanf er det som er passert en peker på variabelen så ingen type kampanjer oppstår eller forventes. F og lf er ganske forskjellige i scanf, men det samme i printf. Personlig pleide jeg å bruke lg rutinemessig for dobler i både printf og scanf, men dette er ute av favør i disse dager og faktisk gcc vil gi deg en advarsel for bruk av lg i printf Den vanlige prosedyren i disse dager er å bruke g for dobbel i printf og lg for dobbel i scanf Det spiller ingen rolle hvilken type du bruker til printf fordi funksjonen printf library behandler dem som synonymt, men Jeg er viktig for å få det riktig for scanf. printf format modifiers. Modifiers vises mellom og og key letter. a nummer er en feltbredde. og et tall er en presisjon. Eksempelutskrift 6 3f, 2 8 gir 2 800 med et mellomrom før 2. Merk at det 6 inneholder 3 desimaler og 1 - 6 tegn totalt. Dermed 6-3-1 2 tegn til til venstre for desimaltegnet. 0 sifferet null betyr pute med nuller til feltbredde som vanligvis bare brukes med heltall. l brevet betyr langt, f. eks. ld for å formatere en lang int i desimal. Eksempel på 0. 2 3 ett mellomrom mellom og 3. I 02d er 0 ikke en del av feltbredden. Det er et modifikatorskarakter. Og når du har en feltbredde, må du skrive den slik at den ikke starter med null, og da kan du legge inn en null som modifikator tegn hvis du vil. Formatering Numerisk utskrift. Tidligere så du bruk av utskrifts - og println-metodene for utskrift av strenger til standardutgang Siden alle tallene kan konverteres til strenger som du vil se senere i denne leksjonen, kan du bruke disse metodene å skrive ut en vilkårlig blanding av strenger og tall Java-programmeringsspråket har annen metode ods, men det tillater deg å utøve mye mer kontroll over utskriftsutgangen når tallene er inkludert. Printf og formatmetoder. Pakken inneholder en PrintStream-klasse som har to formateringsmetoder som du kan bruke til å erstatte utskrift og println Disse metodene, format og printf tilsvarer hverandre Det kjente som du har brukt skjer å være et PrintStream-objekt, slik at du kan påberope PrintStream-metoder på Således kan du bruke format eller printf hvor som helst i koden din hvor du tidligere har brukt utskrift eller println For eksempel. Syntaxen for disse to metodene er den samme. Hvor format er en streng som spesifiserer formateringen som skal brukes, og args er en liste over variablene som skal skrives ut ved hjelp av den formateringen. Et enkelt eksempel ville være. Den første parameteren, format er en formatstreng som angir hvordan objektene i den andre parameteren, args skal formateres. Formatstrengen inneholder ren tekst, samt formatspecifikatorer som er spesialtegn som formaterer t han argumenterer for objektet args Noteringsobjektet args kalles varargs, hvilket betyr at antall argumenter kan variere. Formateringsparametere begynner med et prosent tegn og slutter med en omformer. Omformeren er et tegn som angir hvilken type argument som skal formateres. prosent-tegn og omformeren kan du ha valgfrie flagger og spesifiserere. Det er mange omformere, flagg og spesifiseringselementer som er dokumentert her. Her er et grunnleggende eksempel. d angir at den enkelte variabelen er et desimal heltall. N er en plattform - uavhengig nylinjetype Utgangen er. Utskrifts - og formatmetodene er overbelastede Hver har en versjon med følgende syntaks. For å skrive ut tall i det franske systemet der et komma brukes i stedet for desimaltegnet i engelsk representasjon av flytpunktstall, for eksempel vil du bruke. Følgende tabell viser noen av omformerne og flaggene som brukes i prøveprogrammet, som følger tabellen. Konvertere og flagg Brukes i. Ten cha racters i bredde, rett begrunnet, med tre steder etter desimaltegnet. Følgende program viser noe av formateringen som du kan gjøre med format Utgangen vises i to anførselstegn i den innebygde kommentaren. Merknad Diskusjonen i denne delen dekker bare det grunnleggende av formatet og printf-metodene Ytterligere detaljer finner du i Basic IO-delen av Essential-sporet, på formateringssiden. Bruke å lage strenge er dekket av Strings. The DecimalFormat Class. You kan bruke klassen til å styre visning av ledende og nulstillingsord, prefikser og suffiks, gruppering av tusenvis separatorer, og desimal separatoren DecimalFormat gir stor fleksibilitet i formatering av tall, men det kan gjøre koden mer kompleks. Eksempelet som følger, skaper et DecimalFormat-objekt, myFormatter ved å sende en mønsterstreng til DecimalFormat-konstruktøren Formatmetoden, som DecimalFormat arver fra NumberFormat, blir deretter påkalt av myFormatter det aksepterer en dobbel verdien som et argument og returnerer formatert nummer i en streng. Her er et eksempelprogram som illustrerer bruken av DecimalFormat. Følgende tabell forklarer hver linje av output. There er ikke binær konvertering spesifisert i glibc normalt. Det er mulig å legge til egendefinert konverteringstyper til utskriftsfamilien av funksjoner i glibc Se registerprintfunksjon for detaljer Du kan legge til en tilpasset b-konvertering til eget bruk hvis det forenkler programkoden for å få den tilgjengelig. Her er et eksempel på hvordan du implementerer et tilpasset printfformat i glibc. Også, hva du snakker om wrt håndtering av flere resultater i rekkefølge er ikke reentrancy per se, men ganske enkelt fallout av å bruke det som beløper seg til et globalt objekt for å lagre resultatet i Funksjonen blir ikke re-entered I C er riktig , eller i det minste mye brukt, idiom for å håndtere funksjoner som lagrer resultatene deres i et globalt objekt, er å kopiere disse resultatene umiddelbart etter å skaffe dem. Dette har den store fordelen at jeg F bare ett resultat er nødvendig om gangen, så ingen tilleggsfordeling er nødvendig Greg A Woods 27. november kl. 0 51. Her må vi være uenige Jeg kan ikke se hvordan å legge til et diskret preprosessorsymbol kommer hvor som helst nær skadens begrensning brukstilfellene alvorlig, noe som gjør grensesnittet feilaktig, forbeholder permanent lagring i løpet av programmet for en midlertidig verdi og genererer verre kode på de fleste moderne plattformer R 27 nov på 1 53. Printf-familien kan bare skrive ut i basen 8, 10 og 16 ved hjelp av standardpecifikatene direkte Foreslå å opprette en funksjon som konverterer nummeret til en streng per kode s spesielle behov. Alle andre svar har så langt minst en av disse begrensningene. Bruk statisk minne for returbufferen Dette begrenser antall ganger funksjonen kan brukes som argument for å printf. Allocate minne som krever oppkallingskoden til gratis pekere. Be om anropskoden for å eksplisitt gi en passende buffer. Call printf directly Thi s forplikter en ny funksjon for å fprintf sprintf vsprintf etc. Bruk et redusert antall integer. Følgende har ingen av de ovennevnte begrensning Det krever C99 eller senere og bruk av s Det bruker en sammensatt bokstavelig å gi bufferplassen Det har ingen problemer med flere samtaler i en printf. I denne C programmeringsspråket opplæringen tar vi en ny titt på printf-funksjonen. Vi vil se på hvordan du bruker formatspecifikatorer til å skrive ut formatert utdata på skjermen. Emnene dekkes er en liten printf-bakgrunn, formatspecifikatorer og konverteringer, formatering av forskjellige typer og formatkonverteringer av strings. printf Background. The printf-funksjonen er ikke en del av C-språket, fordi det ikke er noe inngang eller utgang definert i C-språket selv. Printf-funksjonen er bare en nyttig funksjon fra standardbiblioteket av funksjoner som er tilgjengelige av C-programmer Oppførselen til printf er definert i ANSI-standarden Hvis kompilatoren du bruker, overholder denne standarden, så er alle funksjonene en d egenskaper skal være tilgjengelig for deg. Formater Spesifiers. There er mange format spesifiers definert i C Ta en titt på følgende list. float se også notatet nedenfor. Notat f står for float, men C språk har også en ting kalt standard argument kampanjer Standard argument kampanjer skje i variadiske funksjoner Variadiske funksjoner er funksjoner f. eks. printf som tar et variabelt antall argumenter Når en variadisk funksjon kalles, etter lvalue-to-rvalue, array-to-pointer og funksjon-til-pointer konverteringer, hver argument som er en del av variabelen argumentlisten gjennomgår flere konverteringer kjent som standard argument promotions. float argumenter omdannes til dobbelt som i flytende punkt promotion. bool, char, short og unscoped opptellingen konverteres til int eller bredere heltall typer som i integerforfremmelse. Så for eksempel blir floatparametre omgjort til dobler, og char s konverteres til int s Hvis du egentlig trengte å passere, for eksempel, en karbon i stedet for en int, f unction ville måtte konvertere det tilbake. Det er nok på den siden trinn av variadic funksjon og standard argument kampanjer. Let oss ta en titt på et eksempel på printf formatert produksjon som hvorfor du her, er det ikke. Utgang av kilden ovenfor. Som du kan se i den første printf-setningen, skriver vi ut et desimal. I den andre utskriftsoppstillingen skriver vi ut samme desimal, men vi bruker en bredde 3d for å si at vi vil ha tre sifferposisjoner reservert for utgangen. Resultatet er at to mellomromstegn er Plassert før du skriver ut tegnet I den tredje utskriftserklæringen sier vi nesten det samme som det forrige. Skriv ut produksjonen med en bredde på tre siffer, men fyll ut plassen med 0. I den fjerde utskriftserklæringen ønsker vi å skrive ut en flyte I denne utskriften uttalelse vi ønsker å skrive ut tre posisjoner før desimaltegnet kalt bredde og to posisjoner bak desimaltegnet kalt presisjon. n som brukes i printf-setningene, kalles en fluktsekvens. I dette tilfellet representerer det et nytt linjetegn A fter utskrift noe på skjermen du vanligvis vil skrive ut noe på neste linje Hvis det ikke er n, vil en neste printf-kommando skrive ut strengen på samme linje. Vanligvis brukte fluktsekvenser. La oss ta en titt på en utskriftsformatert utgang i en mer applikasjon som eksempel. Utgang fra kilden ovenfor. Som du kan se, skriver vi ut Fahrenheit-temperaturen med en bredde på 3 stillinger. Celsius-temperaturen skrives ut med en bredde på 6 stillinger og en presisjon på 3 stillinger etter desimaltallet s omtale. d skriv ut som et desimal heltall. 6d-utskrift som et desimal heltall med en bredde på minst 6 bred. f skrive ut som flytpunkt. 4f-utskrift som flytende punkt med en bredde på minst 4 bredde. 4f skriv ut som et flytpunkt med en presisjon på fire tegn etter desimaltegnet. 3 2f skriv ut som flytepunkt minst 3 bred og en presisjon av 2.Formatting andre typer. Inntil nå har vi bare brukt heltall og flyter, men det finnes flere typer du kan bruke. Ta en titt på følgende eksempel. Utgang av kilden eksempel. Merknad I den siste utskriftsoppgaven skrives bare prosentpoenget. Tallet 10 i denne utsagnet spiller ingen rolle det er ikke brukt i utgangen. Så hvis du vil skrive ut et prosentvis tall, vil du bruke noe som denne printf 2d n, 10 Utgangen vil være 10.Formatting Strings. By nå har du sett størstedelen av formatet konvertering mulig, men det er en type som er litt annerledes og det er strengformat konverteringer Ta en titt på følgende eksempel. Utgangen av eksempel ovenfor. Som du kan se, reagerer strengformatkonverteringen veldig forskjellig fra tallformatkonverteringer. Printf sn, Hei, verdensoppgave skriver ut strengen, noe som ikke er noe spesielt. Printf 15s n, Hei, verdensoppgave skriver ut strengen, men skriv ut 15 charac ters Hvis strengen er mindre, blir de tomme posisjonene fylt med whitespace. Printf 10s n, Hei, verdensoppgave skriver ut strengen, men skriv ut bare 10 tegn i strengen. Printf -10s n, Hei, verdensoppgave skriver ut strengen , men skriver ut minst 10 tegn. Hvis strengen er mindre, blir hvitt plass lagt til på slutten. Se neste eksempel. Printf -15s n, Hei, verdensoppgave skriver ut strengen, men skriver minst 15 tegn Strengen i dette tilfellet er kortere enn den definerte 15 karakteren, og dermed blir hvite rom lagt til i enden som er definert av minustegnet. Printf 15s n, Hei, verdensoppgave skriver ut strengen, men skriv kun 15 tegn i strengen. I dette tilfellet er strengen kortere enn 15, og dermed hele strengen skrives ut. Printf 15 10s n, Hei, verdenserklæring skriver ut strengen, men skriv ut 15 tegn. Hvis strengen er mindre, blir de tomme posisjonene fylt med hvitt plass. Det vil bare skrive ut maksimalt 10 tegn, og dermed bare del av nytt string old string pluss whitespace posisjoner er printed. The printf -15 10s n, Hei, verdens uttalelse skriver ut strengen, men det gjør akkurat det samme som forrige utsagn, aksepterer hvite plass er lagt til på slutten. En liten advarsel The printf-funksjonen bruker sitt første argument for å bestemme hvor mange argumenter som skal følges og av hvilke typer de er. Hvis du ikke bruker nok argumenter, eller hvis de er av feil type enn printf vil bli forvirret, med som følge av feil svar. Det er alt for denne C opplæringen Bare gjør noen eksempler på din egen, de er enkle å lage Dette er den eneste måten å lære og se hvordan formatkonverteringene reagerer. Dette innlegget ble postet i C Tutorials Du kan følge eventuelle svar på denne oppføringen via RSS 2 0 feed Både kommentarer og pings er for øyeblikket stengt Tweet Dette eller bruk for å dele dette innlegget med andre. Det er for øyeblikket 145 svar på C Tutorial printf, Formatspecifikatorer, Formatkonverteringer og Formatert utgang. Hvorfor ikke gi oss beskjed om hva du synes ved å legge til din egen kommentar. loganaayahee 21. november 2012.Armando problem solution. printf, arr 0 printf 9 3lf n, arr 1 printf 12 1lf n, arr 2.Takk deg for ditt problem. jasleen 25. november 2012.Very pent forklart. Suraj Rana 27. november 2012.Thanx en virkelig hjulpet meg med min eksamen preparations. janardhan 5. desember 2012.Tank du sir, det er nyttig. Takk mye De er veldig hjelpsomme for oss. veldig nyttig, konsis og ferdig. Krispklar forklaring Thanxx. I C er printf en kraftig funksjon med mange formater. Jeg fant en veldig god opplæring her. este enlace pueden encontrar diversos ikke eksempler på å skrive ut for å se formaterarvariabler, og det er veldig bra. Jeg har mye erfaring med Thnx a lot. Sadam Hussain 8. april 2013. Dette er veldig nyttig Jeg liker det veldig mye, jeg håper dette vil være benlig for alle. Jeg trenger å skrive ut en flyte som inneholder en GPS-koordinat i desimalverdier, noe som er -3 6 ie -123 123456 Det siste sifferet 6 er kritisk siden jeg måler ned til 3 meter og krever nøyaktig logging og terminaldata parsing . Er det noen måte å skrive ut verdien så vel som å parsa floaten inn i en streng mens du holder presisjonen. flaten f2 -80 123456 sprintf op, streng 3 6f, f2 printf op. returns strengen -80 123459. Er det en annen måte jeg kan analysere verdien fra en streng til et desimal og holde presisjonen. leser 10 -80 123456 float lon 1000000 float atoi les printf lf 3 6f n, lon. returns lf -80000000 000000.Jeg er villig til å dele karbonverdien i 3 heltall, høy -80, midt på 123, lav 456, men ikke sikker på hvordan du skal para e det inn i deler mens du opprettholder presisjonsverdier 123 123456 til -101 123456 les som en streng. Jeg må skrive ut noe i formatet 0 144231E-03 eller 0 88913E 03 etc, så med vitenskapelig notasjon. Alle ideer Normal vitenskapelig notasjon f. eks. 5 1498587E 03 eller 1 2039404-03 etc er ikke bra, jeg kan ikke bruke hvis for hva jeg trenger å gjøre. Jeg håper du innser at med mindre GPS-en din er nøyaktig til 3 meter, kommer du ikke til å faktisk ha 3 meter av nøyaktighet, uavhengig av hvor mange desimalpoeng det rapporterer. Når det gjelder lagringsproblemer Enkeltprøveflåter har maksimalt 6 til 9 desimaler med presisjon Når du konverterer til en streng, genererer du i hovedsak en desimalrepresentasjon av flyten. Dette betyr at du er garantert at en tall med 6 desimaler kan konverteres frem og tilbake mellom en float og det er strengrepresentasjon som er desimalt. Men mer enn det som virkelig avhenger av nummeret, det vil si at noen 7, 8 og 9 sifre kan konverteres nøyaktig mens andre vunnet t. So i ditt tilfelle har du et 8-sifret desimalnummer som du først konverterer til å flyte, og deretter tilbake til desimal i strengform. Du bør forvente at de fleste 6 sifferene i det minste vil stemme. I ditt andre eksempel brukte du atoi som konverterer en ascii-streng til et heltall Hele tallene har ikke desimalpoeng. Utgangen er akkurat det du burde få. Prøv atof. Thanks. Hjalp meg til raskt å revidere formatspeciers. great mye. Format Specifiers Escape Sequence. could noen fortelle meg hvorfor i syntaxen av printf og scanf 3 punkter er used. thx bt jeg forstår ikke betydningen av d. Lilian 10. september 2013. Ok Menn, veldig bra. What vil skje hvis Vi hopper over i Scanf-funksjonen Hva er h, du Specifiers. sailakshmi 26. september 2013.i vil ha noen eksempler på å bruke tegnsett i formatert inngang og output. mehwish 26. september 2013.Plz jeg trenger noen programmer angående Format spesifierer kan yew gutta hjelpe meg i det. Ahme Chaware den 2. oktober 2013. Denne artikkelen løste alle mine tvil, takk så mye. Strengen er også veldig tydelig forklaret. Skriv ut denne setningen gir feil, printf dc denne gir output som søppel verdi hvorfor. Steven Nguyen 3. oktober 2013.Hvordan du skriver ut stort nummer i formatet. sonu verma 7. oktober 2013.int 5 Printf d 46, i Hva vil være utgang og hvordan. sonu verma Komponerer dette i det hele tatt Hva vil du nå med dette Du legger til en konstant i en formatstreng Programmet kan krasje eller du får søppel Det avhenger av hva som er lagret 46 senere etter d i minnet. Hva er bruken av p i c. sir hvordan du lager merket ved å bruke bare utskriftsoppgaven med breddeangivelser. s er bruk for lese streng c er for tegn, men hva er bruk av LF pls rply. what er g står for. Det er veldig nyttig for me. really help. MS SANDHYA 19. desember 2013.how vil dette bli henrettet n 13224 printf d, printf d, printf d, n. Bruk den korteste representasjonen e eller fi e den vitenskapelige mantissa eksponenten vs flyte representasjon. Jeg antar at seg int n 13224, ellers vunnet det kompilere. Det er utført i henhold til normale parentesregler. Den innerste printf analyseres først og produserer strengen 13224 som skrives ut. Resultatet sendes deretter videre til den midtre utskriftsfonen som faktisk skriver ut rett etter forrige resultat 13224 lengden antall siffer i den innerste strengen, dvs. 5 Deretter skriver den ytre utskriften lengden på denne streng, dvs. lengde på 5, nemlig 1 Derfor er resultatet 1322451.Giridhar 29. januar 2014.Det finnes en måte å formatere et heltall med tegnet i det positive tilfellet, jeg e. Aayushi Mishra 28. februar 2014.printf ddd vil gi utgang 013 440 hvorfor. Hamza Saghir 23. mars 2014.Kan noen plzz fortelle meg forma t spesifiserer hvis tallet er 1 345 og den viste utgangen er 1 35.varun kumar 12. april 2014.int en 20, b 30, c 40 printf ddd output er 40 30 20 Jeg vil vite årsaken bak it. thanx dette hjelper meg mye jeg skal være på eksamen på denne tirsdag ønske meg heldig. Jeg vil bare bruke format spesifier c skrive ut datatype hex datatype float datatype hvordan å løse dette prob. Printf Format Strings. By Alex Allain. By som standard gir C stor makt for formatering av utdata. Standardvisningsfunksjonen, printf, tar en format streng som lar deg angi mye informasjon om hvordan en programmet er formatert. Merk om du leter etter informasjon om formateringsutdata i C, ta en titt på formatering C-utdata ved hjelp av iomanip. Vi ser på anatomien til en formatstreng etterfulgt av noen korte eksempelprogrammer for å vise de forskjellige innstillingene i handling Jeg vant t inkludere hvert eneste mulig alternativ - i stedet, mitt mål er å gjøre det enkelt å forstå minispråket som du kan bruke til å lage formatstrenger, og lære deg hvordan du bruker den vanlige formateringen du mest sannsynlig trenger. Etnografi av en formatstreng. Når du ringer til printf, grunnleggende ide er at du skal gi en rekke tegn som har noen bokstavstegn og noen elementer som skal byttes. For eksempel, en streng som. Vil skrives ut bokstavelig som det ser ut Selv om det noen ganger er nok til å skrive bokstavelig talt inn i din kode nøyaktig hva du vil skrive ut, vil du vanligvis gjøre noe mer avansert - enten introdusere spesialtegn ved hjelp av fluktsekvenser eller introdusere variable verdier ved hjelp av formatspecifiers. Escape Sequences. There er noen tegn som du ikke kan direkte inngå i en streng. Disse er tegn som en newline, som må være representert ved hjelp av en spesiell syntaks. Disse kalles fluktsekvenser og ser slik ut. Her har jeg skrevet inn nybegynnene mellom hvert bokstav, a, b og c. Hver rømning e-sekvensen starter med et tilbakeslagstegn De viktigste fluktsekvensene du vil bruke er n, for å sette en ny linje, og t, for å sette inn en fane. Siden et tilbakeslag viser normalt starten på en fluksekvens, hvis du vil sette inn en escape-sekvensen du må bruke til å vise en backslash. is hvordan du skriver en Windows-sti i C. Det er ett annet avansert trick, som er at du kan skrive num for å vise ASCII-tegnet representert av verdi-nummeret. Dette er nyttig hvis du vil vise et tegn som du ikke kan skrive på tastaturet, for eksempel aksentt bokstaver. For eksempel vil 130 skrive ut et tegn i noen tilfeller, avhengig av hva maskinen din har satt opp med utvidede ASCII-tegn. Formateringsspesifikatorer . Hvis du vil introdusere noen varians i utdataene, gjør du det ved å indikere at ekstern data er nødvendig. I denne strengen indikerer d at verdien som skal vises på det punktet i strengen må tas fra en variabel The tegn indikerer at vi spleiser noen data i strengen, og d-tegnet indikerer at vi spleiser i et desimalnummer. Den delen av strengen som begynner med kalles formatet spesifiser. For å faktisk få det nummeret, må vi gi den verdien til printf. which vil vise. Alt av den interessante formatering som du kan gjøre innebærer å endre verdiene du legger etter tegnet, som er det faktiske formatet. Formatet for hva som vises om et tegn er. De fleste av disse feltene er valgfrie, annet enn å gi en konvertering spesifier, som du allerede har sett for eksempel ved å bruke d til å skrive ut et desimalnummer. Forståelse av denne formatering gjøres best ved å arbeide bakover, begynner med konverteringsspesifikasjonen og arbeider utover Så la oss begynne på slutten. Konverteringsspesifikator. Omregningen specifier er delen av formatet spesifier som bestemmer grunnformateringen av verdien som skal skrives ut. Konverteringsspesifikasjoner for heltall. Hvis du vil skrive ut et desimalnummer i base 0, vil du se enten d eller id eller jeg Hvis du vil skrive ut et heltall i oktal eller heksadesimale, bruker du o for oktal eller x for heksadesimal Hvis du vil ha store bokstaver A i stedet for en når du skriver ut desimal 10, kan du bruke X. Conversion Spesifikatorer for flytende punktnumre. Viser flytende punktnumre har mange forskjellige alternativer, best vist i en tabell. Okay, det var ikke så ille det var. Men det diagrammet er litt komplisert. Min anbefaling bruker bare g, og det vil vanligvis gjøre hva du vil. Hvor vitenskapelig notasjon er mest hensiktsmessig. Viser et prosent-tegn. Siden prosentandesignalet brukes til å definere formatspecifikatorer, er det et spesielt format spesifiserer som betyr å skrive ut prosentandelen sign. to bare skrive ut et prosent-tegn. Nå, la s gå gjennom hver av de forskjellige komponentene i et format specifier. Length Modifier. Length Modifier er kanskje merkelig-heter det ikke endre lengden på produksjonen i stedet er det hva du bruker til å angi lengden på input Huh si deg har her, d er th e input til printf og hva du sier er at du vil skrive ut d som en dobbel, men d er ikke en dobbel, den er en lang dobbel. En lang dobbel er sannsynligvis 16 byte sammenlignet med 8 for en dobbel, så forskjellen saker Prøv å kjøre den lille biten og du vil finne at du får søppelpost som ser noe ut som dette. Husk at bytesene som blir gitt til printf, blir behandlet som en dobbel - men de er dobbelt, de blir en lang dobbel lengden er feil, og resultatene er stygge. Lengdemodifiereren handler om å hjelpe printf-avtale med tilfeller der du bruker uvanlig store eller uvanlig små variabler. Den beste måten å tenke på lengdemodifiserende er å si hvilken variabel type jeg har, og trenger jeg å bruke en lengde modifier for det her, så bord som burde hjelpe deg. lang dobbel d 3 1415926535 printf Lg, jeg vil gjerne nevne den brede karakterhåndteringen Hvis du skriver. uten l, blir resultatet vil være å skrive ut en enkelt W på skjermen Årsaken er tha t brede tegn er to byte, og for enkle ASCII-tegn som W, er den andre byte 0 Derfor tror printf at strengen er ferdig. Du må fortelle printf å se etter multibyte tegn ved å legge til ls. Hvis du tilfeldigvis bruker wprintf, kan du på den annen side bare bruke s og den vil behandle alle strengene som brede tegnstrenger. Presisjonsmodifiseringen er skrevet og har litt forskjellige betydninger for de forskjellige konverteringsspesifikasjonene som d eller g. For flytende punktnummer egf, styrer det antall siffer som skrives ut etter desimaltegnet. Hvis nummeret som er angitt, har mer presisjon enn det er gitt, vil det runde For example. will vise som. Interstansvert, for g og G, vil det styre antall signifikante tall som vises Dette vil ikke bare påvirke verdien etter desimaltallet, men hele tallet. For heltalene, derimot, presiserer den det minste antall sifre som skrives ut. Vil du skrive ut nummeret 10 med tre sifre. Der s ett spesielt tilfelle for heltall - hvis du angir 0, vil nummer null ikke ha noe output. Finally, for strenger, styrer presisjonen maksimal lengde på strengen som vises. Dette er nyttig hvis du må sørge for at Utgangen går ikke utover et fast antall tegn. Breddefeltet er nesten det motsatte av presisjonsfeltet. Precision styrer maksimalt antall tegn som skal skrives ut, bredden styrer minimumsnummeret og har samme format som presisjon, unntatt uten en desimalpunkt. Den tomme mellomrom går i begynnelsen, som standard. Du kan kombinere presisjon og bredde, hvis du liker bredde presisjon. Merk det ledende rommet. Flagginnstillingen styrer tegn som legges til en streng, for eksempel om du vil legge til 0x til et heksadesimale nummer, eller om du vil legge til tall med 0. De spesifikke flaggalternativene er. Pund Sign. Adding en vil forårsake en 0 for å bli prepended til et oktalnummer når du bruker o-konverteringsspesifikatoren, eller en 0x som skal overføres til et heksadesimale tall når du bruker konverteringsspecifikke for økser For de fleste andre konverteringsspesifikasjoner, legger du til en vilje bare ved å inkludere et desimalpunkt, selv om Nummeret har ingen brøkdel av del. Skriv ut. Resultater i ganske enkelt. Zero Flag 0. Bruk 0 vil tvinge tallet som skal polstres med 0s Dette betyr bare viktig hvis du bruker breddeinnstillingen for å be om en minimal bredde for nummeret ditt For eksempel, hvis du skriver. Pluss-tegn-flagget. Pluss-tegnet vil inneholde tegnspesifikatoren for nummeret. Minus Sign Flag. Til slutt vil minustegnet føre til at utgangen blir etterlatt. Dette er viktig hvis du bruker Bredden spesifiserer og yo du vil at padding skal vises på slutten av utgangen i stedet for begynnelsen. Med padding på slutten av outputbining det hele sammen. For et gitt format spesifierer, kan du gi må alltid gi prosent-tegn og base spesifiserer deg kan da inkludere noen eller alle flaggene, bredden og presisjonen og lengden du vil. Du kan til og med inkludere flere flaggmaskere. Her er et spesielt komplekst eksempel som demonstrerer flere flagg som vil være nyttig for å skrive ut minnetadresser som heksadesimale verdier. Den enkleste måten å lese dette er å først merke tegnet og deretter lese til høyre for venstre - x indikerer at vi skriver ut en heksadesimal verdi 10 indikerer at vi vil ha 10 totalt tegn bredde neste 0 er et flagg som indikerer at vi vil pute med 0s intead av mellomrom, og til slutt betyr tegnet at vi vil ha en ledende 0x Siden vi starter med 0x betyr dette at vi skal ha 8 sifre - akkurat det rette beløpet for å skrive ut en 32-biters minneadresse. Det endelige resultatet er. Les mer s imilar artikler.

No comments:

Post a Comment