Imprimer des entiers avec des séparateurs de milliers dans Windows en utilisant C

La question est assez explicite, je suppose. J’utilise printf et mes amis (snprintf, etc.) pour afficher des statistiques sur la mémoire qui se situent dans la plage des millions ou des centaines de milliers. Lire un numéro au format “1 523 556” est beaucoup plus facile que “1523556” pour mon esprit paresseux.

J’ai essayé de définir les parameters régionaux et d’utiliser l’indicateur d’apostrophe avant le spécificateur de format (% ‘d et%’ llu), mais apparemment, l’apostrophe est un standard du SUS, de sorte qu’il risque de ne pas fonctionner de toute façon sous Windows.

Existe-t-il une API spécifique à Windows pour cela? Je travaille avec Pelles C et programme en ANSI C99.

** MODIFIER **

Après avoir lu les réponses et les pages MSDN qui leur sont associées, je comprends pourquoi .NET est la méthode préférée pour la programmation Windows. Cela simplifie énormément le travail des API.

L’API Win32 fournit une fonction permettant de formater un nombre avec un groupe de milliers (ou tout groupe approprié pour l’environnement local spécifié): GetNumberFormat() ( http://msdn.microsoft.com/en-us/library/dd318110.aspx ).

Malheureusement, c’est une API assez pénible à utiliser – pas aussi simple que le spécificateur de format apostrophe dans SUS (par contre, vous obtenez beaucoup de flexibilité en échange de la complexité)

Utilisez GetNumberFormatEx (pour Windows Vista et versions ultérieures). L’option LOCALE_NAME_USER_DEFAULT utilise les préférences définies dans le Panneau de configuration sous les options régionales et linguistiques, y compris un séparateur de milliers.