c - Mit jelent a% * s formátum meghatározó?

Translate

Bizonyos kódokban, amelyeket karban kell tartanom, láttam egy formátummeghatározót%*s. Meg tudja valaki mondani, hogy mi ez és miért használják?

Példa a használatára:

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

Minden válasz

Translate

Dinamikus módon határozza meg, hogy mekkora a mező szélessége:

  • A szélességet nem a formátum karaktersorozata határozza meg, hanem a formázandó argumentumot megelőző kiegészítő egészérték argumentumként.

így a "behúzás" meghatározza, hogy mennyi helyet kell lefoglalni a paraméterlistában azt követő karakterlánc számára.

Így,

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

ugyanaz mint

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

Ez egy jó módszer arra, hogy a fájlba néhány helyet tegyen, elkerülve a hurkot.

Forrás
Translate

Ne használja a (z) "% * s" -t olyan pufferen, amely nem NULL végződésű (csomagolt), gondolván, hogy csak a "length" mezőt fogja kinyomtatni.

Forrás
Translate

A% 4s formátummeghatározó 4 karakterlánc mezőt ad ki egy karakterláncból - vagyis a printf legalább 4 karakteres pozícióval jeleníti meg az értéket.

Ha a kimeneti érték:lessmint 4 karakter szélességű, az értékright justifiedalapértelmezés szerint a mezőben.

Ha az értékgreatermint 4 karakter pozíció széles, a mező szélességeexpandsa megfelelő számú karakter befogadására.

Az érték balra igazításához használjon negatív egész számot a mező szélességének megadásához.

Referenciák:Java ™ programozás (korai objektumok), tizedik kiadás

Forrás
Translate

* Az fprintf arra készteti a kimenetet, hogy n karakter széles legyen, ahol n egy egész érték, amelyet a a függvény argumentumban tárolunk, közvetlenül megelőzve a módosított típust.

printf("%*d", 5, 10) //will result in "10" being printed with a width of 5.
Forrás
Translate

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

A szélességet nem a formátum karaktersorozata határozza meg, hanem a formázandó argumentumot megelőző kiegészítő egészérték argumentumként.

például:printf("%*s", 4, myValue);egyenértékűprintf("%4s", myValue);.

Forrás
Leave a Reply
You must be logged in to post a answer.
A szerzőről