390 votes

Impression des 0 devant ' s en C ?

Je vais essayer de trouver une bonne façon d’imprimer le 0 initial, comme 01001 pour un code postal. Alors que le nombre serait stocké comme 1001, ce qui est une bonne façon de le faire ?

J’ai pensé à l’aide de deux instructions case / si puis de comprendre combien de chiffres le nombre est et puis le convertir en un tableau de char avec appoint 0 pour l’impression, mais je ne peux pas m’empêcher de penser qu’il peut y avoir un moyen de le faire avec la syntaxe du format printf qui est me trompant.

641voto

EvilTeach Points 12235
<pre><code></code><p></pre>

174voto

James Curran Points 55356

Est la bonne solution : stocker le code postal dans la base de données sous forme de chaîne. Malgré le fait qu’il peut ressembler à un certain nombre, il n’est pas. Il s’agit d’un code, où chaque partie a sens.

Un nombre est une chose que vous effectuer des opérations arithmétiques sur. Un code postal n’est pas cela.

48voto

Adam Bellaire Points 42797

Vous placez un zéro avant la largeur de champ minimale :

16voto

JeeBee Points 11882

Code postal est un champ très localisé, de nombreux pays ont des caractères dans leur codes postaux, par exemple, UK, Canada. C’est pourquoi dans cet exemple, vous devez utiliser une chaîne / champ varchar de les stocker si à n’importe quel point de vous serait d’expédition ou obtenir des utilisateurs/clients/clients/etc dans d’autres pays.

Toutefois, dans le cas général, vous devez utiliser la réponse recommandée ( `` ).

16voto

Paul Tomblin Points 83687
man 3 printf

0 La valeur doit être égale à zéro collier. Pour d, i, o, u, x, X, a, a, e, E, f, F, g, et G conversions, la valeur convertie est rembourré sur les la gauche avec des zéros plutôt que de blancs. Si le 0 et - drapeaux les deux apparaissent, le 0 est ignoré. Si une précision est donnée avec une conversion numérique (d, i, o, u, x, et X), 0 drapeau est ignoré. Pour les autres conversions, le comportement est indéfini.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X