Печать целых чисел с тысячами разделителей в Windows с помощью C - PullRequest
1 голос
/ 05 ноября 2010

Вопрос довольно понятен, я полагаю.Я использую printf и друзей (snprintf и т. Д.), Чтобы отобразить статистику памяти, находящуюся в диапазоне миллионов или сотен тысяч.Считать число, отформатированное как «1,523,556», намного проще, чем «1523556», если я ленивый образ мысли.

Я попытался установить язык и использовать флаг апостроф перед указателем формата (% 'd and%'llu), но апостроф, по-видимому, является стандартом для SUS, так что в любом случае он может не работать у меня в Windows.

Есть ли для этого специальный API для Windows?Я работаю с Pelles C и программирую прямо на ANSI C99.

** EDIT **

После прочтения ответов и связанных с ними страниц MSDN я понимаю, почему предпочтительным является .NETметод для программирования Windows сейчас.Это сглаживает огромное количество работы API.

Ответы [ 2 ]

2 голосов
/ 05 ноября 2010

Win32 API предоставляет функцию, которая будет форматировать число с группировкой тысяч (или любой другой группой, подходящей для указанной локали): GetNumberFormat() (http://msdn.microsoft.com/en-us/library/dd318110.aspx).

К сожалению, это довольно болезненный APIиспользовать - не так просто, как спецификатор формата апострофа в SUS (с другой стороны, вы получаете большую гибкость в обмен на сложность)

1 голос
/ 05 ноября 2010

Использовать GetNumberFormatEx (для Windows Vista и более поздних версий).Параметр LOCALE_NAME_USER_DEFAULT использует настройки, установленные на панели управления для региональных и языковых параметров, включая разделитель тысяч.

...