我们自己实现库函数:
strcpy();
strcat();
strstr();
strchr();
void Strcpy(char* a, char* b){
assert(a != NULL && b != NULL);
char *start = a;
while ( *b != '\0'){
*start = *b;
++b;
++start;
}
*start = '\0';
printf("%s\n", a);
}
void Strcat(char* a, char* b){
assert(a != NULL && b != NULL);
char* p = a;
while (*p != '\0'){
++p;
}
while (*b != '\0'){
*p = *b;
++p;
++b;
}
}
int Strstr(char *a, char* b){
assert(a != NULL && b != NULL);
char* black_a = a;
char* red = a;
char* black_b = b;
while (*black_a != '\0'){
red = black_a;
black_b = b;
while (*black_b != '\0'
&& (*black_a != '\0')
&& (*red == *black_b)){
++red;
++black_b;
}
if (*black_b == '\0'){
printf("找到了\n");
return 1;
}
else { ++black_a; }
}
printf("没找到\n");
return 0;
}
int Strchr(const char *str,char mode){
assert(str != NULL);
int index = 1;
while (*str != '\0'){
if (*str == mode){
printf("找到了:%d\n", index);
return index;
}
++str;
++index;
}
return 0;
}
第一个语句为断言函数assert();
需要在头文件声明<assert.h>
当括号里面的表达式为0时,终止程序,我写在第一句是为了防止访问0号内存,防止未定义行为。