关于数字变字符串的问题 CHAR *Int2Str(int n, CHAR *p){ CHAR szBuf[16] = {0}; int i; for(i=0; n; i++) { szBuf[14-i] = '0' + n%10; n/= 10; } strcpy(p, szBuf+15-i); return p;}这个没符号的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给个微软高手写的char *strFromUns(unsigned u) { static char strDigits = “?????”; /* 5个字符+’\0’ */ char *pch; /* u 超出范围了吗?使用UlongToStr … */ ASSERT(u<=65535); /* 将每位数字自后向前存储在strDigits中 */ pch = &strDigits[5]; ASSERT(*pch == ‘\0’); do *--pch = u%10 + ‘0’; while((u/=10)>0); return(pch); } szBuf[14-i] = '0' + n%10;为什么要+‘0’呢。不明白。感谢上面的大哥给的解答。我已经验证过了。很好。但是我有一点小疑问 就是为什么要+‘0’。麻烦给解答一下 。 字符,对应的是一个char类型的整形量,范围-128~127。对于字符'0',其ascII码是48。依次的,'1'的ascII码是49,即48+1,也就是'0'+1以此类推....注意了:c语言中的字符串是字符数组,就是一个char的序列。每个字符既可以看做一个字符,也可以从其本质上认为是一个整数。 孙鑫视频上就有int ASCII0 481 48+1......... int a=1234;char ch[5];int b=a/1000;ch[0]=b;b=a/100;ch[1]=b/10;b=a%100;ch[2]=b/10;ch[3]=a%10;/////上面这些是把每个数位提取出来 你可以写个递归函数 ch[4]='\0'; CString str=ch; 这样就行了 思想就是你用/ 或者求余运算 把 每个数位提取出来 再在最后加上'\0'就成字符串了 char *MyItoA(unsigned int num, char* pDst) { if(pDst == NULL) return NULL; int nLen = strlen(pDst); memset(pDst, 0, nLen); char* p = pDst + nLen; do { *--p = num%10 + '0'; } while( (num /= 10)>0 ); return pDst; } WIN32控制台程序如何禁止指定窗口或者网页的打开? 让俺崩溃的CString 创建线程出错 求高手帮忙,关于一点在DLL的对话框中不会响应PreTranslateMessage消息 如何实现嵌套对话框 如何设计一个全局的HOOK,改变所有窗口的标题? 对初学者VB和BCB那个更好些? 究竟错在哪???为什么??大家拉拉小弟一把! 请问我怎样实现动画 获取cpu空闲率问题 CSDN真TMD没能人啊, 这么点小问题都没人给我解决掉啊 急问,,ADO访问SQL数据库问题 ·!·!
char *strFromUns(unsigned u)
{
static char strDigits = “?????”;
/* 5个字符+’\0’ */
char *pch;
/* u 超出范围了吗?使用UlongToStr … */
ASSERT(u<=65535);
/* 将每位数字自后向前存储在strDigits中 */
pch = &strDigits[5];
ASSERT(*pch == ‘\0’);
do
*--pch = u%10 + ‘0’;
while((u/=10)>0);
return(pch);
}
为什么要+‘0’呢。不明白。感谢上面的大哥给的解答。我已经验证过了。很好。但是我有一点小疑问 就是为什么要+‘0’。麻烦给解答一下 。
对于字符'0',其ascII码是48。
依次的,'1'的ascII码是49,即48+1,也就是'0'+1
以此类推....
注意了:c语言中的字符串是字符数组,就是一个char的序列。每个字符既可以看做一个字符,也可以从其本质上认为是一个整数。
int ASCII
0 48
1 48+1
.
.
.......
char ch[5];
int b=a/1000;
ch[0]=b;
b=a/100;
ch[1]=b/10;
b=a%100;
ch[2]=b/10;
ch[3]=a%10;
/////上面这些是把每个数位提取出来 你可以写个递归函数
ch[4]='\0';
CString str=ch;
这样就行了 思想就是你用/ 或者求余运算 把 每个数位提取出来 再在最后加上'\0'就成字符串了
{
if(pDst == NULL)
return NULL; int nLen = strlen(pDst); memset(pDst, 0, nLen); char* p = pDst + nLen;
do
{
*--p = num%10 + '0';
}
while( (num /= 10)>0 );
return pDst;
}