菜鸟求助!怎样用编写程序来实现strcmp的功能!

MOTOGP 2006-03-28 02:12:45
现在不用strcmp函数,用自己编写的程序来实现这个函数的功能!
...全文
337 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinqing_yx 2006-03-31
  • 打赏
  • 举报
回复
int strcmp(char *lhs, const char *rhs)
{
assert(lhs != NULL && rhs != NULL);
while((*lhs != '\0') && (*lhs == *rhs))
{
lhs++;
rhs++;
}
return *lhs - *rhs;
}
「已注销」 2006-03-31
  • 打赏
  • 举报
回复
实现很容易,就是效率问题
lei001 2006-03-31
  • 打赏
  • 举报
回复
比较起来是容易,主要还是考虑效率的
jixingzhong 2006-03-30
  • 打赏
  • 举报
回复
strcmp函数 ...
就是传入的两个串逐个字符比较啊 ...
zh2817 2006-03-28
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
void strcopy(char *to,const char *from)
{
while(*to++=*from++);
}
void main()
{
char a[20]="hello,China!";
char *b=new char[20];
strcopy(b,a);
cout<<b<<'\n';
delete b;
}
逸学堂 2006-03-28
  • 打赏
  • 举报
回复

//==============================Start Ustrncat=========================================

/*
// 函数名:Ustrncat
// 输入参数:字符串str1(字符串目的),字符串str2(字符串源)
// 输出参数:目的字符串的头指针
// 描述:把字符串str2内容复制给str1
char aa[100];
char *bb = "aaaaaaa";
memset(aa,0,100);
cout << strcpy(aa,bb) << endl;
cout << Ustrcat(aa,bb,10) << endl;
// 分析:Ustrncat函数可以自行指定字符串str2拷贝到str1中的字符数量(count)。count要在外部测试
防止出现内存错误,溢出。参考Ustrcat。
*/
char* Ustrncat(char *str1, const char* str2,int count)
{
// 保留头指针
char *pTemp = str1;
// 指向头字符串的尾部
while((*str1++) != '\0');
--str1;
int i;
// 安count进行复制
for(i = 0; i < count; ++i)
{
*str1++ = *str2++;
}
// 末尾加结束标志
*str1 = '\0';

// 返回头指针
return pTemp;
}

//==============================END Ustrncat=========================================

//==============================Start Ustrcmp=========================================
/*
// 函数名:Ustrcmp
// 输入参数:两个字符串
// 输出参数:字符串对比长度
// 描述:两个字符串相等,
// 输入值 返回值
// "1234" -> 4
// "-1234" -> 4
// 测试用例
// char p[] = "-234yaasaa";
// int i = Ustrlen(p);
// 分析:字符串匹配,各个字符对比。
*/
int Ustrcmp(const char *sourstr,const char *str)
{
if(sourstr == NULL)
{
return -1;
}
if(str == NULL)
{
return 1;
}
// 查找字符结束符号,如果是strncmp函数,结束标志可以用n的数量控制
while((*sourstr) == (*str) && (*sourstr) != '\0')
{
++sourstr;
++str;
}

// 判断当前是否到字符串末尾
if((*sourstr) == '\0' && (*str) != '\0')
{
return -1;
}

return (sourstr) - (*str);

////
//if((*sourstr) > (*str))
//{
// return 1;
//}
//else if((*sourstr) < (*str))
//{
// return -1;
//}

//// 返回字符串大小
//return 0;
}
//==============================End Ustrcmp=========================================
goodluckyxl 2006-03-28
  • 打赏
  • 举报
回复
到ms的crt下找下就知道了
int __cdecl strcmp (
const char * src,
const char * dst
)
{
int ret = 0 ;

while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;

if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;

return( ret );
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧