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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言定义函数实现strcmp功能相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
char strcmp(char[],char[]);
void main()

char a[10],b[10],c[10];
gets(a);
gets(b);
*c=strcmp(a,b);
printf("%s",c);

char strcmp(char a[],char b[])

int i=0;
for(i=0;a[i]!=b[i];i++);
if(a[i]>b[i])

return(*a);

if(a[i]<b[i])

return(*b);

在C语言中可以通过定义一个函数来实现这个功能,比如:
int compare(char a[22],b[22])

int i=0;
while(a[i]==b[i]&&i<22)
i++;
if(i==21) return 1;
else return 0;

就这么多就行了,strcmp函数返回的值是如果比较相同则返回0,否者返回非零值,上面我定义的函数遵循这一规则。
用的时候有两种方法:
1》先声明,后主函数调用,再最后写上上面的定义函数
2》先定义上面的函数,主函数直接调用(这样不用声明了)
参考技术A void main()

char a[10],b[10],c[10];
gets(a);
gets(b);
c[0]=strcmp(a,b); //返回值只有一个字符
printf("%c",c[0] );
追问

能改得详细点么。。。就这样改了输出全是0

追答

你的要求strcmp返回值应该是什么?正常情况如果a大,返回1,a小返回-1,相等返回0
而你程序是返回第一个字符,所以,不知道你想要的结果是什么?请说明

追问

返回值我弄错了。。。而且是循环里面循环条件出了问题,已解决,谢啦

本回答被提问者采纳

用C语言程序,通过自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和的功能

strcat(char *p1,char *p2,char *p)

while(*p1) //检查指针是否到了'\0'

*p=*p1; //赋值
p1++; //指针指向下一个字符
p++;

while(*p2)

*p=*p2;
p2++;
p++;

*p='\0'; //为str3结尾加上'\0'


这个是strcat是3个形参的,两个形参的是这样写的
void strcat(char *p1, char *p2)

while(*p1)

p1++;

while(*p2)

*p1 = *p2;
p1++;
p2++;

*p1 = '\0';

注意 p1开的数组要比p2大哦

int strlen(char *p1)

char *s=p1; //将指针s指向指针p,即指向str1
while(*s) //当*s不为'\0'的时候
s++; //指针指向下一个字符
return (s-p1); //当s指向字符串的'\0'的前一位,而p指向的是开头,所以s-p就是长度


strcpy(char *p1, char *p2)

while(*p2)

*p1 = *p2;
p1++;
p2++;



strcmp(char *p1, char *p2)

//当*p1,*p2不为空,且*p1 == *p2,循环执行
while(*p1 && *p2 && (*p1 == *p2))

//指向下一个元素
p1++;
p2++;


if(*p1> *p2)
return 1;
else if(*p1< *p2)
return -1;

return 0;
参考技术A

0.0+【我自己做的

【strlen
   char ch1[10]="abc";
    int i;
    for(i=0;ch1[i]!='\\0';i++);//循环到不是\\0为假(结尾)
        printf("len=%d",i);//循环次数就是字符串的长度
    getch();

【strcpy
   char ch1[20]="abcde",ch2[20];
    int i;
    for(i=0;ch1[i]!='\\0';i++)
        ch2[i]=ch1[i];//用ch2替换掉ch1的每一位
    ch2[i]='\\0';//在最后一位后面加上结束标志
    printf("%s",ch2);//%s表示输出字符串
    getch();

【strcat
   char ch1[20]="abc",ch2[20]="def";
    int i,j;
    for(i=0;ch1[i];i++);
        for(j=0;ch2[j];j++)
            ch1[i+j]=ch2[j];//把ch2加在ch1的后面
    ch1[i+j]='\\0'; //在最后一位后面加上结束标志
    printf("%s",ch1);
    getch();

↑过程:abcd→abcde→abcdef
【strcmp
   charch1[20]="abc",ch2[20]="acd";
    int i;
    for(i=0;ch1[i]==ch2[i];i++)//比较到不同的那位
        if(ch1[19]=ch2[19])//如果全相同,则相等
            printf("ch1=ch2");
    if(ch1[i]>ch2[i])//不同的那位比大小
        printf("ch1>ch2");
    else if(ch1[i]<ch2[i])
        printf("ch1<ch2");
    getch();

参考技术B char *mystrcat(char *dst, char *src)

char *p = dst;
while(*p)++p;
while(*p++ = *src++);
return dst;

char *mystrcpy(char *dst, char *src)

while(*dst++ = *src++);
return dst;

int mystrcmp(char *dst, char *src)

while(*dst && *dst == *src)

++dst;
++src;

return *dst - *src;

int mystrlen(char *dst)

char *p = dst;
while(*p)++p;
return p - dst;

int main()

char s[32], t[32] = "HELLO,CHINA";
mystrcpy(s, "HELLO,");
puts(s);
mystrcat(s, "USA");
puts(s);

printf("%d %d\n", mystrlen(s), mystrcmp(s, t));
本回答被提问者和网友采纳

以上是关于c语言定义函数实现strcmp功能的主要内容,如果未能解决你的问题,请参考以下文章

C语言试题193之实现strcmp函数功能

C语言试题193之实现strcmp函数功能

C语言试题193之实现strcmp函数功能

C语言标准库函数strcpy与strcmp的简单实现

c语言编程 写一个函数,实现两个字符串的比较,即写一个类似于strcmp功能的函数。急求,谢谢!

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