今天解答了一个网友留在blog上的问题,原贴发布在http://blog.csdn.net/edodo/archive/2004/10/12/133870.aspx?Pending=true
现在将答案转贴到我自己的Blog上面
/**
* \titleTest strcm
* \authorAnkyHe
* \authorankyhe@263.net
* \date20041012
*/
#include <iostream>
using namespace std;
//你写的strcm函数
int strcm(const char *str3,const char *str4)
{
for(;*str3==*str4;str3++,str4++)
{
if(!*str3)
return 0;
}
return (*str3-*str4);
}
//测试用的主函数
int main(int,char**)
{
const char str1[] = "Hello";
const char str2[] = "Hello";
const char str3[] = "Hello world!";
const char str4[] = "hello";
cout<<strcm(str1,str2)<<endl;
cout<<strcm(str1,str3)<<endl;
cout<<strcm(str1,str4)<<endl;
cout<<'H'-'h'<<endl;
return 0;
}
//测试结果
/***********************************************************************
0
-32
-32
***********************************************************************/
//分析
/*
实际上,(!*str3)是不是表示str3当前指向的这个char是不是\0,
也就是说str3是不是已经指向了字符串的结尾的\0字符,如果是,就返回0
*str3-*str4是不是表示两个字符内容的ascii码相减。
*/