#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int strcmp(char *str1,char *str2)
{
assert(str1!=0 && str2!=0);
while(*str1 && *str2 && *str1==*str2)
{
str1++;
str2++;
}
return *str1-*str2;
}
int strlen(char *str)
{
int len=0;
while(*str != '\0')
{
str++;
len++;
}
return len;
}
char *strcpy(char *new_str,char *old_str)
{
char *temp=new_str;
assert(old_str != NULL && new_str !=NULL);
while(*old_str != '\0')
{
*temp=*old_str;
old_str++;
temp++;
}
*temp='\0';
return new_str;
}
-------------------------------------------------------------------------------------------
一种更简单的描述
char *strcpy(char *new_str,char *old_str)
{
assert((new_str != NULL) && (old_str !=NULL));
char *temp=new_str;
while((*temp++ = *old_str++) != NULL)
continue;
return new_str;
}
----------------------------------------------------------------------------------------
char *strcat(char *str1,char *str2)
{
assert(str1 !=NULL && str2 != NULL);
char *temp=str1;
while(*temp != 0)
{
temp++;
}
while(*str2 != 0)
{
*temp++=*str2++;
}
*temp='\0';
return str1;
}
void main()
{
int res,str_length;
char string1[]="abcd";
char string2[]="abc";
char *new_str=(char *)malloc(sizeof(char));
new_str=strcpy(new_str,string1);
res=strcmp(string1,string2);
str_length=strlen(string1);
printf("%d\n",res);
printf("%d\n",str_length);
printf("%s\n",new_str);
printf("%s\n",strcat(string1,string2));
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void *memcpy(void *dest,const void *src,int n)从源src所指的内存地址的起始位置拷贝N个字节到dest所指内存地址的起始位置
void main()
{
char *s="hello,world!";
char str[20];
memcpy(str,s,5);
str[5]='\0';
printf("%s\n",str);
}
void *memset(void *s, int ch, size_t n); 函数解释:将s中前n个字节替换为ch并返回s;
void main()
{
char str[5];
memset(str,'1',5);
for(int i=0;i<5;i++)
{
printf("%c\n",str[i]);
}
}
注意这里是'1',而不是1,如果是1就有问题,memset函数是以字节为单位来赋值的。