将两个字符串比较是否相等
要求:给定两个字符串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);
}