toyix 发布留言 2008-7-25 13:17
请教一段C的代码
#include
#include
#include
//#include
int main()
{
char buffer[100];
printf("请输入序列号:\n");
scanf( "%s", buffer );
if ( my_strcmp( buffer, "SN12345" ) == 0 )
printf("注册成功!\n");
else
printf( "注册失败!\n" );
getche();
return 0;
}
// 为了测试,代码并没有优化,并且还特意使用了三个局部变量
//
int my_strcmp( const char* pszSrc, const char* pszDest )
{
char* pSrc = (char*)pszSrc;
char* pDest = (char*)pszDest;
int iResult = 0;
for ( ; *pSrc != 0 && *pDest != 0 ; pSrc++, pDest++ )
{
iResult = *pSrc - *pDest;
if ( iResult != 0 )
return iResult;
}
return 0;
}
这个自定义函数的形参const char* pszSrc, const char* pszDest ,为什么要加上const,我式了 如果去掉也可以,病书生 发布留言 2008-7-25 15:25
const 只是为了保护 原有的 数据不被破坏,是常量
如const x=2
那么 就不能在修改x的值啦,x=3,x=4之类都是错误的toyix 发布留言 2008-7-25 20:18
谢谢missiyou 发布留言 2008-7-25 20:23
*pSrc != 0 && *pDest != 0
应该是
*pSrc != '\0' && *pDest != '\0'hundnn 发布留言 2008-7-25 20:25
#include
#include
这两个头文件是做什么的?怎么没见过?指点下
谢谢hundnn 发布留言 2008-7-25 20:28
[un]missiyou[/un] 在 2008-7-25 20:23 的发言:[/bo]
*pSrc != 0 && *pDest != 0 应该是
*pSrc != '\0' && *pDest != '\0' |
说的对.'\0'是字符串结尾符./jingjing54007 发布留言 2008-7-25 21:17
注意,这个代码存在巨大漏洞!!!你编译后回发现,只要输入“SN12345”中任意一个组合,就成功了!![em12]zhaozhirui 发布留言 2008-7-26 03:52
回复 4# missiyou 的帖子
谢了!难怪我看了代码有少少疑问,开朗很多。
页: [1]