求简单代码把 一个3335435 转换成字符串"3,335,435"
把int型格式化到字符串,按每3位一个逗号
比如
char sz[128];
int num=3335435;
_snprintf(sz, 127, "数字:%d", num);
输出:
数字:3335435
最后一行_snprintf 应该改成什么样,才能输出:
数字3,335,435
呢?? 字符串
[解决办法]
http://bbs.bccn.net/thread-348122-1-1.html
[解决办法]
没有直接的支持,以下代码供你参考:
#include <string.h>
#include <stdio.h>
void comai(unsigned long n, char* str)
{
int len;
int ic;
int c3;
int i;
sprintf(str, "%ld", n);
len = strlen(str);
ic = len / 3;
if(len % 3 == 0) ic--;
str[len + ic] = '\0';
i = len - 1;
c3 = 0;
while(ic != 0 && i >= 0)
{
str[i + ic] = str[i];
if(c3++ == 2)
{
c3 = 0;
str[i + ic - 1] = ',';
ic--;
}
i--;
}
}
int main(int argc, char* argv[])
{
char str[128];
comai(3335435, str);
printf("%s\n", str);
return 0;
}
string s="";
stringstream ss;
while (int number>0)
{
string temp;
ss<<number%1000;
ss>>temp;
s=temp+','+s;
number/=1000
}
s=s.substr(0,s.length()-1);
/**
* @file thousands_sep.c
* @author mymtom
*/
#include <stdio.h>
#include <locale.h>
int main(int argc, char *argv[])
{
int n = 3335435;
char s[20];
setlocale(LC_NUMERIC, "en_US.ISO8859-1");
sprintf(s, "%'d", n);
printf("%s\n", s);
return 0;
}
// 字符串翻转,返回翻转的字符个数
size_t rever(char *dest,const char *src)
{
int n = strlen(src) - 1;
size_t i = 0;
for (;n >= 0;dest++,n--)
{
*dest = *(src + n);
++i;
}
return i; // 注意返回翻转的字符个数
}
int _tmain(int argc, _TCHAR* argv[])
{
int n = -54665554;
char s[30] = {0};
sprintf(s, "%d", n);
char sDes[30] = {0};
char *p1 = s + strlen(s) - 1;
char *p2 = sDes;
int i = 1;
while (p1 >= s)
{
if ((i++)%4 == 0)
{
*p2 = ',';
}
else
{
*p2 = *p1;
p1--;
}
p2++;
}
memset(s ,0 ,30);
rever(s,sDes);
printf("%s\n", s);
return 0;
}
char * comma(__int64 num) {
static char commades[80];
static char commasrc[80];
sprintf(commasrc,"%I64d",num);
int L=strlen(commasrc);
register int j=0;
register int k=0;
for (int i=L-1;i>=0;i--) {
commades[j]=commasrc[i];
k++;
j++;
if ((k%3)==0 && i>0) {
commades[j]=',';
j++;
}
}
commades[j]=0;
strcpy(commades,strrev(commades));
return commades;
}
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
PTCHAR FormatNumber(PTCHAR pbuf, DWORD bufsize, DWORD value)
{
PTCHAR tmp = new TCHAR[16];
DWORD offset = 0;
ZeroMemory(tmp, 16*sizeof(TCHAR));
ZeroMemory(pbuf, bufsize*sizeof(TCHAR));
wsprintf(tmp, TEXT("%u"), value);
DWORD lenth = _tcslen(tmp);
if ( bufsize < lenth+lenth/3+1 )
{
return NULL;
}
offset = lenth%3;
_tcsncpy(pbuf , tmp, offset);
for (DWORD i=0; i<lenth/3; i++, offset+=3)
{
_tcscat(pbuf, TEXT(","));
_tcsncat(pbuf, tmp+offset, 3);
}
delete tmp;
return pbuf;
}
int main(int argc, char* argv[])
{
TCHAR buf[1024];
_tprintf(TEXT("%s\n"), FormatNumber(buf, 1024, 0xFFFFFFFF));
return 0;
}