我的函数是这么定义的:
void aaa(char * str1)
{
...
sprintf(str1,"%s",str2);
...
}
调用函数:
char str[10];
memset(str,0,10);
aaa(str);问题:
1 如果str2长度超过10 ,会发生什么情况?(编译没有错误)
2 在函数aaa内,str1应该怎么赋值比较规范?
void aaa(char * str1)
{
...
sprintf(str1,"%s",str2);
...
}
调用函数:
char str[10];
memset(str,0,10);
aaa(str);问题:
1 如果str2长度超过10 ,会发生什么情况?(编译没有错误)
2 在函数aaa内,str1应该怎么赋值比较规范?
解决方案 »
- 求DSOFRAMER控件全屏实现代码
- USB ReadFile第二次失败
- 网络编程学习
- 100分求:Richedit插入动态GIF
- 调试中遇到的一个问题(我将一个全局变量换一个地方声明后,程序仍然指向原来的地方)
- 在wince中 cpu 200M的 用directshow 播放音乐mp3, 切换到别的程序时会有1.5sec左右延迟,听不到声音
- 如何从嵌套的对话框中使用一个函数,结束所有程序,退出软件
- list控件内容打印
- 急救:关于windows的消息问题,发送WM_CLOSE,WM_DESTROY对话框没有退出,欢迎讨论,有代码?
- HDC,CDC,CClientDC的区别和联系是什么?
- 如何改变wizard的标题?
- 关于CMap的问题,总有错误,请知道的兄弟进来看看!
2)可以把长度作为参数,声明成memset那样。
2)可以把长度作为参数,声明成memset那样。
{ if (str1 == NULL || str2 == NULL) return NULL; char *strDestTemp = strDest; while(size-- > 0 && (strDest++ = strSource++) != '\0'); return strDestTemp;
}
{ if (str1 == NULL || str2 == NULL) return NULL; char *strDestTemp = strDest; while(size-- > 0 && (strDest++ = strSource++) != '\0'); return strDestTemp;
}
{ if (str1 == NULL || str2 == NULL) return NULL; char *strDestTemp = strDest; int i = strlen(strDest); while(i-- > 0 && (strDest++ = strSource++) != '\0'); return strDestTemp;
}
{
...
int iTotal = strlen(str1)>strlen(str2) ? strlen(str2) : strlen(str1);
memecpy(str1, str2, iTotal);
...
}
{
...
int iTotal = strlen(str1)>strlen(str2) ? strlen(str2) : strlen(str1);
memcpy(str1, str2, iTotal);
...
}