strncpy要与sizeof搭配使用,而不是strlen
2012-05-22 17:30
232 查看
入库程序调了半天,发现是strncpy的使用上有问题,打印日志如下:
改正后的代码如下:
strncpy(UserInfo.CtrlHost, MainHost, sizeof(UserInfo.CtrlHost));
这里原来是strncpy(UserInfo.CtrlHost, MainHost, strlen(MainHost));
strncpy的用法说明,参考:
strcpy与strncpy函数 Memset 转载
http://anwj336.blog.163.com/blog/static/894152092010524105439599/
memcopy和memmove 区别(另strcpy(), strncpy()和memset())
http://blog.csdn.net/deutschester/article/details/5852215
本文出自 “林子” 博客,请务必保留此出处http://linlinhust.blog.51cto.com/5128561/872857
2012-05-22 16:52:18 DEBUG Rcvhost:[.my3456.com],OldHost:[.my3456.com]. RcvTime:[60737], OldTime[60737]. 2012-05-22 16:52:28 DEBUG Rcvhost:[.654xs.com],OldHost:[.my3456.com]. RcvTime:[60747], OldTime[60737]. 2012-05-22 16:52:28 DEBUG after strncpy RecvHost:[.654xs.com],UserInfo.CtrlHost:[.654xs.comm].
改正后的代码如下:
g_DbToLog.PrintLog(DEBUG_LEVEL, "Rcvhost:[%s],OldHost:[%s]. RcvTime:[%u], OldTime[%u].", MainHost, UserInfo.CtrlHost, RecvTime, UserInfo.CtrlTime); if (strcmp(UserInfo.CtrlHost,MainHost)==0 && (RecvTime-UserInfo.CtrlTime)<4) { return false; } else { UserInfo.CtrlTime = RecvTime; strncpy(UserInfo.CtrlHost, MainHost, sizeof(UserInfo.CtrlHost)); g_DbToLog.PrintLog(DEBUG_LEVEL, "after strncpy RecvHost:[%s],UserInfo.CtrlHost:[%s].",MainHost, UserInfo.CtrlHost); Update(UserInfo); return true; }
strncpy(UserInfo.CtrlHost, MainHost, sizeof(UserInfo.CtrlHost));
这里原来是strncpy(UserInfo.CtrlHost, MainHost, strlen(MainHost));
strncpy的用法说明,参考:
strcpy与strncpy函数 Memset 转载
http://anwj336.blog.163.com/blog/static/894152092010524105439599/
memcopy和memmove 区别(另strcpy(), strncpy()和memset())
http://blog.csdn.net/deutschester/article/details/5852215
本文出自 “林子” 博客,请务必保留此出处http://linlinhust.blog.51cto.com/5128561/872857
相关文章推荐
- 字符串长度的计算:sizeof和strlen的使用
- strncpy strcpy strncat strcat sizeof strlen 概述
- sizeof()和strlen()区别和使用方法
- C语言中sizeof()与strlen()函数的使用入门及对比
- c/c++的strlen,sizeof的使用
- strlen() 和 sizeof() 在字符串中的使用
- sizeof和strlen区别和使用方法
- sizeof和strlen区别和使用方法
- sizeof和strlen的使用
- c语言006-sizeof/strlen的使用和区别
- sizeof(变量名)与strlen(字符数组名)的使用区别
- sizeof和strlen的使用方法和区别
- sizeof的使用以及sizeof与strlen的区别
- sizeof和strlen的使用与区别
- strlen与sizeof使用中易混淆之处
- sizeof,strlen 使用总结
- sizeof和strlen使用技巧
- sizeof与strlen使用,字符串指针数组
- sizeof strlen memset strncpy的基本用法
- 基于Sizeof与Strlen的区别以及联系的使用详解