判斷兩個字串是否相等
阿新 • • 發佈:2018-12-11
將兩個字串比較是否相等
要求:給定兩個字串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);
}