strlen函数实现(c语言)
#include <stdio.h>
int strlen(const char *s)
{
const char *p;
if(s == NULL)
{
printf("input point is NULL");
return -1;
}
for (p = s; *p; ++p);
return p - s; //通过地址来计算
}
int main()
{
char *s="hello";
printf("%s has %d chars\n",s,strlen(s));
return 0;
}
输出
strcpy()
#include<stdio.h>
#include <assert.h>
#define N 10
char *strcpy(char *dst,const char *src)
{
char *ret = dst;
assert((dst!=NULL)&&(src!=NULL));
while((*dst++=*src++)!='\0'); //指针会往\0,后移动一个位置
return ret;
}
int main(){
char *s="hello";
char d[N];
strcpy(d,s);
printf("%s\n",d);
return 0;
}
strcmp()
#include<stdio.h>
#include <assert.h>
#define N 10
int strcmp(const char * src, const char * dst)
//字典序比较两字符串大小
{
int ret = 0 ;
while((ret=*src-*dst)==0&&*dst) //*dst是判断是否结束
src++, dst++;
return( ret );
}
int main(){
char *s1="Hello";
char *s2="Hell";
int r;
r=strcmp(s1,s2);
if(!r)
printf("s1 and s2 are identical\n");
else
if(r<0)
printf("s1 less than s2\n");
else
printf("s1 greater than s2\n");
return 0;
}
strcat()
#include<stdio.h>
#include <assert.h>
#define N 10
char *strcat(char *dst, const char *src)
{
char *ret = dst;
assert( (dst!=NULL)&&(src!=NULL) );
while (*dst++ != '\0');
--dst;
while ((*dst++ = *src++) != '\0');//指针已经移动到'\0'下个位置,但在这里并不要紧
return ret;
}
int main(){
char d[20]="Golden Global";
char *s=" View";
strcat(d,s);
printf("%s",d);
return 0;
}