我用下面方法:
#include <iostream>
char *str = "com";
char *cnum = 0;
int i = 12;sprint(cnum, "%d", i);
strcpy(str, cnum);但不知道能不能得到“com12”数据。请问各位用什么方法?
#include <iostream>
char *str = "com";
char *cnum = 0;
int i = 12;sprint(cnum, "%d", i);
strcpy(str, cnum);但不知道能不能得到“com12”数据。请问各位用什么方法?
解决方案 »
- 100分---关于实现单用户登录的一些想法
- 有下载过vs2010TCP的没?感觉咋样?我只有80G硬盘.装不了.我想问一下VC2010中它 V 了没有?
- 对话框创建问题
- 想学习MFC的web控件编程,有什么好的书或资料推荐吗?
- VC如何画直线
- 关于boost在VC6编译时的一个问题!
- OCX 中的接口函数怎么返回指针呢 我试了 void* char* 都不可以啊 谁帮帮我啊
- 请问可以这样定义分块查找中的索引表吗
- 交通灯的多进程调度问题
- VC++6.0在MFC的picture控件中绘制动态的三维坐标系,通过坐标,将点显示出来?
- 在哪个类中有DevMode结构的详细介绍,我找不到它了,帮个忙啊!!!!!!!
- 怎么得到一个dll中函数的调用格式?
char * str = "com"; //这样不行吧?
char cnum[11];
sprint(cnum, "%d", i);
strcpy(str, cnum);之所以定义11的空间,是由于int最长时10个字节,多一个为结束符
你的错误在于没有为cnum分配空间,然后向0处写值,那是不可访问的
即使那里成功了,strcpy(str, cnum);也可能出错,当cnum大于3个字符时(包结束符4个字节),就错了,因为str只有4个空间,你将覆盖后面的东东,后果不堪设想!
要用wsprintf,原因,我记不清楚了.你的用下面方法:
#include <iostream>
char *str = "com";
char *cnum = 0;
int i = 12;sprint(cnum, "%d", i);
strcpy(str, cnum);我的方法:
#include <iostream>
const char * cpchStr = "com";
char *pchBuf = NULL; //存储缓存.
char *pchNum = NULL; //请不要用0,不好.
int iNum = 12; //请不要使用i,i一般是用来做计数器的.int iCharTypeSize = sizeof(char); //获得char的长度.
int iIntTypeStrLen = 5 + 1; //请在系统初始化的时候,测试int类型的数值范围,
//来确定其转为字符串的长度.加一是为了存储'\0';//求取字符串长度,我忘记了.我就用lstrlen来代替吧.
//申请空间,呵呵,我喜欢用malloc,喜欢自己处理.呵呵.
int iBufLen = lstrlen(cpchStr) + iIntTypeStrLen + 1; //
if (iBufLen < 0)
{
//长度溢出进行处理.
return ERROR; //返回错误.错误号,自己编.
}
pchNum = (char *)malloc( iCharTypeSize * iIntTypeStrLen );
if (pchNum == NULL)
{
//空间申请失败,处理错误.
return ERROR;
}
//清理申请的空间.
memset( pchNum, 0, iIntTypeStrLen );char * pchBuf = (char *) malloc(iCharTypeSize * iBufLen);
if (pchBuf == NULL)
{
//申请空间失败.
free( pchNum ); //释放申请的空间pchNum
return ERROR;
}memset( pchBuf, 0, iBufLen ); //清理空间.
wsprintf( pchNum, "%d", iNum);
strcpy(pchBuf, pchNum);
如有不足的地方,请大虾们多多指教.我的信箱[email protected]
int iBufLen = lstrlen(cpchStr) + iIntTypeStrLen; //
我多用了一个字节,呵呵.