编写strcmp函数,不使用库函数,相等返回0,不等返回1。
#include<stdio.h>
#include<stdlib.h>
int strcmp(char *source,char *dest)
{
int ret=0;
while(!(ret=*(unsigned char *)source-*(unsigned char *)dest)&&*dest)//做减法
{
source++;
dest++;
}
if(ret<0||ret>0)
{
ret=-1;
}
else if(ret>0)
{
ret=1;
}
return ret;
}
int main(int argc, const char *argv[])
{
char a[20],b[20];
//char*p=(char*)malloc(20);
//char*q=(char*)malloc(20);
printf("input a:\n");
scanf("%s",a);
printf("input b:\n");
scanf("%s",b);
p=a;
q=b;
printf("ret=%d\n",strcmp(p,q));
return 0;
}
unsigned char
int/long/short等不指定signed/unsigned时都默认是signed
char在标准中是unsigned
都占1个字节