自己写一个strcmp函数(帮我写一个简易的strcmp函数(C语言))

:暂无数据 2026-08-21 06:00:01 :0

自己写一个strcmp函数(帮我写一个简易的strcmp函数(C语言))

各位老铁们,大家好,今天由我来为大家分享自己写一个strcmp函数,以及帮我写一个简易的strcmp函数(C语言)的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录

帮我写一个简易的strcmp函数(C语言)

① c的strcmp简洁实现可以是这样的:

int strcmp(const char* s1, const char* s2)
{
    while(*s1 && (*s1==*s2))
        s1++,s2++;
    return *(const unsigned char*)s1-*(const unsigned char*)s2;
}

② strcmp的返回值可以有3种,即《0, =0, 》0 (任意一个数值),代表的含义分别是: str1 strcmp用的是二进制比较,意思是按字典顺序,比如: 字母a 《 字母 b;而a 》 A。 (这是因为a的ascii码是97,而A的是65)。

理解了这个,上面的代码就好理解了。 while就是s1,s2从头到位一个一个字符的比较。如果s1为空,或者s1不等于s2,则中断循环 (s1不为空,s2为空,则是*s1 != *s2,退出循环)。返回值是循环中断时的字符(分别s1和s2对应的位置,*s1-*s2, 如果是上面说的 ’a’ - ’A’, 那么返回的就是97-65=32),那么意味着a在A前面, strcmp 》 0。

之所以先转换成const unsigned char*再作减法,是由于c的char有三种: char, signed char 和unsigned char。 char就是’a’这样的, 而 signed char 则是-127~126之间的数值,而unsigned char则是0~255之间的一个值。 转换成unsigned char就是要“确保” ’a’ ---》 97。 你要不转换,也是可以的。

说明一点,很多c的lib实现,比如gnu c, 都是把结果处理成: -1, 0, 1, 而不是这个字符对应的ascii码的差值。

c++自己写一个strcmp函数,实现两个字符串的比较两个字符串s1,s2由main函数输入

#include 《stdio.h》
int strcmp_new(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;}
int main(){
char s1 = "1234";
char s2 = "1234";
int ret1 = strcmp_new(s1,s2);
printf("ret=%d\n", ret1);
getchar();
return 0;}

独立实现标准字符串库的strcmp函数 请不要直接黏贴百科,希望有一些注解,谢谢

楼主你好。
以下是我自己写的strcmp函数:
#include 《stdio.h》
#include 《string.h》
int strcmp(const char *p, const char *q){
while(*p && *q && *p == *q){p++;q++;}
//若p和q都未指向字符串结尾,且p和q指向的字符相同,p和q同时后移
return *p-*q;
}
int main()
{
char *a="abcd",*b="bcd";
int ret=strcmp(a,b);
if(ret == 0){
printf("Equal!\n");
}else if(ret 》 0){
printf("First string is bigger!\n");
}else{
printf("Second string is bigger!\n");
}
return 1;
}
你只要注释掉我写的strcmp函数,就可以查看真正的strcmp函数的结果,可以对比一下。
我相信真正的strcmp的代码跟我这个差不了多少。

求c语言实现strcmp功能的自编程序

#include 《stdio.h》
int main()
{
int strcmp(char * p1,char * p2);
char * s1 = "hello world";
char s2 = "hello_world";
char s3 = "hello world";
if(strcmp(s1,s2)==0){
printf("String s1 and s2 are equal!\n");
}
else{
printf("String s1 and s2 are not equal!\n");
}
if(strcmp(s1,s3)==0){
printf("String s1 and s3 are equal!\n");
}
else{
printf("String s1 and s3 are not equal!\n");
}
getchar();
return 0;
}
//自己编写的一个比较字符串的函数
int strcmp(char * p1,char * p2)
{
for(;;)
{
if(*p1==’\0’ && *p2==’\0’){
return 0;
}
if(*p1!=*p2){
return (*p1 - *p2);
}
p1++;
p2++;
}
}

求c语言大神写一函数独立实现标准字符串库的strcmp函数

#include《stdio.h》

int strcmp(const char *str1,const char *str2)
{
/* 注释以下的五行(while循环)可以简写为:
* for(;(*str1==*str2)&&*str1!=’\0’;str1++,str2++);
* */
while((*str1==*str2)&&*str1!=’\0’)
{
str1++;
str2++;
}

if(*str1==’\0’&&*str2==’\0’) return 1;
else return -1;
}

int main()
{
char *st1="abdefg";
char *st2="abcdefg";
printf("%d\n",strcmp(st1,st2));

char *st3="12345";
char *st4="12345";
printf("%d\n",strcmp(st3,st4));

return 0;
}

用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为 :int strcmp

首先 无条件的给bad赋值为 0;
其次,你的判断条件有问题 条件改为 (*p == *q )&&(*p != ‘0’)&&(*q!=‘0’)此时,进入循环 执行:p++,q++;
while()循环外面 执行 求bad的语句;
建议!!
附代码:
#include《stdio.h》
int str(char* p1,char* p2)
{
while(*p1 && *p2 && *p1 == *p2)
{
p1++;
p2++;
}
return *p1 - *p2;
}
int main(void)
{
char a = "abcdefg";
char b = "abcdasd";
int ret = 0;
ret = str(a,b);
printf("%d\n",ret);
return 0;
}

自定义strcmp函数.

  两个字符串string1,string2的比较只有有3种情况:

  1. string1》string2

  2. string1《string2

  3. string1=string2

    因此只需对这些情况进行判断即可比较出两个字符串的关系。

int strcmp(char string1)
{
    int i; for(i=0;;i++)
    {
        if(string1)return 1;//返回正数
        else if(string1)return -1;//返回负数
        //判断进行到这一步时string1,所以其中任意一个为’\0’两者都为’\0’。 
                else if(string1==’\0’)return 0;//返回0;
           }
}

c语言定义函数实现strcmp功能

在C语言中可以通过定义一个函数来实现这个功能,比如:
int compare(char a)
{
int i=0;
while(a&&i《22)
i++;
if(i==21) return 1;
else return 0;
}
就这么多就行了,strcmp函数返回的值是如果比较相同则返回0,否者返回非零值,上面我定义的函数遵循这一规则。
用的时候有两种方法:
1》先声明,后主函数调用,再最后写上上面的定义函数
2》先定义上面的函数,主函数直接调用(这样不用声明了)

用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为

#include《stdio.h》
int strcmp(char *p1,char *p2)
{
 while(*p1||*p2)
 {
  if(*p1!=*p2) 
   return(*p1-*p2);
  else 
  {
   p1++; 
   p2++;
  }
 }
 return 0; 
}
void main()
{
 char s1,*p1,*p2; //字符串
 int k;
 printf("请键入两个字符串:\n");
 scanf("%s %s",s1,s2);
 p1=s1;
 p2=s2;
 k=strcmp(p1,p2);
 printf("Result is:%d\n",k);
}

以上就是我们为大家找到的有关“自己写一个strcmp函数(帮我写一个简易的strcmp函数(C语言))”的所有内容了,希望可以帮助到你。如果对我们网站的其他内容感兴趣请持续关注本站。

自己写一个strcmp函数(帮我写一个简易的strcmp函数(C语言))

本文编辑:admin

更多文章:


linux系统的特性(Linux系统的主要特点是什么)

linux系统的特性(Linux系统的主要特点是什么)

大家好,关于linux系统的特性很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于Linux系统的主要特点是什么的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月15日 10:50

知名女星孙侨璐于跨年夜,心梗猝死,年仅25岁!一一一写给年轻人?1月2日演员孙侨潞离世,说好的来日方长转眼就是别离

知名女星孙侨璐于跨年夜,心梗猝死,年仅25岁!一一一写给年轻人?1月2日演员孙侨潞离世,说好的来日方长转眼就是别离

其实演员孙侨潞的问题并不复杂,但是又很多的朋友都不太了解知名女星孙侨璐于跨年夜,心梗猝死,年仅25岁!一一一写给年轻人,因此呢,今天小编就来为大家分享演员孙侨潞的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月15日 10:40

mariadb忘记密码(mysql用户密码忘记了怎么办)

mariadb忘记密码(mysql用户密码忘记了怎么办)

大家好,mariadb忘记密码相信很多的网友都不是很明白,包括mysql用户密码忘记了怎么办也是一样,不过没有关系,接下来就来为大家分享关于mariadb忘记密码和mysql用户密码忘记了怎么办的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月15日 07:50

mysql端口号(如何查看自己数据库的端口号)

mysql端口号(如何查看自己数据库的端口号)

“mysql端口号”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看mysql端口号(如何查看自己数据库的端口号)!

2026年10月15日 06:30

printf打印16进制(C语言 十六进制怎么输出)

printf打印16进制(C语言 十六进制怎么输出)

大家好,今天小编来为大家解答以下的问题,关于printf打印16进制,C语言 十六进制怎么输出这个很多人还不知道,现在让我们一起来看看吧!

2026年10月15日 06:00

avantage怎么设置为中文(Avantage安装丢失GIT)

avantage怎么设置为中文(Avantage安装丢失GIT)

大家好,如果您还对avantage怎么设置为中文不太了解,没有关系,今天就由本站为大家分享avantage怎么设置为中文的知识,包括Avantage安装丢失GIT的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月15日 03:00

ospf协议的作用是什么(OSPF路由协议的作用是什么)

ospf协议的作用是什么(OSPF路由协议的作用是什么)

“ospf协议的作用是什么”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看ospf协议的作用是什么(OSPF路由协议的作用是什么)!

2026年10月15日 02:40

方案对比特效js(在一个网页中如何实现两个JS特效)

方案对比特效js(在一个网页中如何实现两个JS特效)

各位老铁们好,相信很多人对方案对比特效js都不是特别的了解,因此呢,今天就来为大家分享下关于方案对比特效js以及在一个网页中如何实现两个JS特效的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月15日 02:10

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

今天给各位分享登陆视频监控网页时提示activex控件未注册,怎么解决的知识,其中也会对登陆视频监控网页时提示activex控件未注册,怎么解决进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 20:30

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

今天给各位分享用C语言编程学生信息管理系统!的知识,其中也会对用C语言编程学生信息管理系统!进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 20:20

最近更新

可信验证系统(什么是可信云认证)
2026-10-15 10:00:23 浏览:0
热门文章

标签列表