c - Mitä muotoa% * s tarkoittaa?

Translate

Joissakin koodeissa, jotka minun on ylläpidettävä, olen nähnyt muodon määrittelijän%*s. Voiko kukaan kertoa minulle, mikä tämä on ja miksi sitä käytetään?

Esimerkki sen käytöstä on:

fprintf(outFile, "\n%*s", indent, "");
This question and all comments follow the "Attribution Required."

Kaikki vastaukset

Translate

Sitä käytetään määrittämään dynaamisesti kentän leveys:

  • Leveyttä ei määritetä muotoilumerkkijonossa, vaan se on lisälukuarvoargumentti, joka edeltää muotoiltua argumenttia.

niin "sisennys" määrittää kuinka paljon tilaa varataan merkkijonolle, joka seuraa sitä parametriluettelossa.

Niin,

printf("%*s", 5, "");

on sama kuin

printf("%5s", "");

Se on mukava tapa sijoittaa tiedostoon välilyöntejä välttäen silmukkaa.

Lähde
Translate

Älä käytä "% * s" puskurissa, joka ei ole NULL-päättynyt (pakattu) ajattelemalla, että se tulostaa vain "pituus" -kentän.

Lähde
Translate

Formaatin määrittelijä% 4s antaa merkkijonon kentän leveydellä 4 - eli printf näyttää arvon, jossa on vähintään 4 merkkiä.

Jos tulostettava arvo onlessyli 4 merkkipaikkaa leveä, arvo onright justifiedoletuksena kentässä.

Jos arvo ongreateryli 4 merkkipaikkaa leveä, kentän leveysexpandssopivan määrän merkkejä varten.

Jos haluat perustella arvon vasemmalle, määritä kentän leveys negatiivisella kokonaisluvulla.

Viitteet:Java ™ -ohjelmointi (Early Objects), kymmenes painos

Lähde
Translate

* Aiheuttaa fprintf: n täyttämään ulostulon, kunnes sen pituus on n merkkiä, missä n on kokonaislukuarvo, joka on tallennettu funktion argumenttiin, joka edeltää muokatun tyypin edustamaa argumenttia.

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
Lähde
Translate

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

Leveyttä ei määritetä muotoilumerkkijonossa, vaan se on lisälukuarvoargumentti, joka edeltää muotoiltua argumenttia.

esim:printf("%*s", 4, myValue);on vastaavaprintf("%4s", myValue);.

Lähde
Leave a Reply
You must be logged in to post a answer.
Kirjailijasta