判断两个字符串是否相等

将两个字符串比较是否相等

要求:给定两个字符串s1,s2并赋值,判断两个字符串是否相等,若相等则返回0,否则返回1。

包含的引用函数

strlen(s1)取字符串的长度

方案一:使用数组表示,取两个数组的长度,k为较长数组的长度,两个数组依次比较字符串里面的内容,如果相等则j+1,比较完之后,若果j=k则返回0,若j≠k,则返回1

#include<string.h>
#include<stdio.h>
int strcmp()
{   
    char s1[] = "1244";
    char s2[] = "1234";
    int i=0,j=0,k=0;
    if(strlen(s1)>=strlen(s2))
        {
            k = strlen(s1);
        }
    else{
            k = strlen(s2);
        }
    for(i=0;i < k;i++)
    {
        if(s1[i] == s2[i])
        {
            j++;
        }
    }   
    if(j == k)
    {
        return 0;
    }
    else
    {
        return 1;
    }   
}

main()
{
    int a = 0;
    a = strcmp();
    printf("%d\n",a);
}


方案二:使用指针

判断的条件是,长度相等,并且最后一位是\0,之前全部相等。

*s1是指针对象,就是具体的值
s1是这个对象的一个内存地址
s1++就是往后取地址,每一个地址上都对应一个char类型的字符
a=strcmp(s1, s2);就是一个函数的调用,调用的时候传的是实参,实参传给形参
int strcmp (const char* s1,const char* s2) 定义方法时候括号里写的是形参

#include<string.h>
#include<stdio.h>
int strcmp (const char* s1,const char* s2)
{

    while(*s1++ == *s2++)
    {
        if(*s1=='\0' && *s2=='\0')
            return 0;
    }
    return 1;
}

main()
{
    int a;
    char s1[] = "12";//s1->a //++s1->s //*s1=s //*s1=='\0' //=char*s1 
    char s2[] = "1234"; //s2->a 

    a=strcmp(s1, s2);
    printf("%d\n",a); 
} 

猜你喜欢

转载自blog.csdn.net/ngany/article/details/75450828