strlen 通过判断 \0 结束来计算长度。两个问题:
1) 如同上面各位大霞所说, 使用 Create_name[]="atxt";
2) 善用 sizeof, 避免使用 strlen.
________________________________________________________________________
highgear发表于 2009-6-23 21:00 | 只看该作者 回复 引用 返回版面 TOP 得分:0
41楼:
顶山**!顶鹰!我用技术贴来结贴吧
1)这是讨论串口发送,一个通用的串口发送程序不应该有所限制,很多时候,0 也是通讯协议的一部分,即使发送的是字符串,例如同# $ * 0x0A, 0x0D 一样作为协议结束标志。
2)判断"\0"作为字符串的结尾,便利但危险。我前面已经说的很清楚了。如果是概念清楚的高手,这么做无可厚非,而菜鸟这么做则不妥。最简strcpy的讨论,现在看来,实际应用中的隐患极大,一般程序员不建议使用。很多著名的程序漏洞多是由判断"\0"引起,如使用极广的 ftp Server: ServerU. 原贴主enjoy21cn 的程序是另一个极好的例子。
3)sizeof 不用多说了。我说过,要强迫程序员关注数组长度,以避免不必要的溢出。要学会使用 sizeof, 即使你定义的是 char A[3]。在冷漠以前要求的程序中,我已经给冷漠指出过。冷漠原贴为 i < 15:
for (i = 0; i < sizeof(table); i++) //记住:永远不要直接使用数组长度!!!!!
{
P1 = ~table; |