一,assert()
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:
#include <assert.h>
void assert( int expression );
assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。
二,strcpy()
char *strcpy(char *dest, const char *src){
assert((dest != NULL)&&(src != NULL));
char *p = dest;
while(*src != '\0')
{
*dest = *src;
src ++;
dest ++;
}
*dest = '\0';
return p;
}
注意下面几点:
1,把第二个参数设置为const,防止对它进行修改。
2,设置断言。
3,返回目标地址,方便进行连续赋值。
三,strcat()
char *strcat(char *dest, const char *src) {
assert(dest != NULL && src != NULL);
char *p = dest;
while(*dest != '\0'){
dest ++;
}
while(*src != '\0'){
*dest = *src;
src ++;
dest ++;
}
*dest = '\0';
return p;
}
四,strcmp()
int strcmp(const char *str1, const char *str2){
assert(str1 != NULL && str2 != NULL);
while(*str1 && *str2 && *str1 == *str2){
str1 ++;
str2 ++;
}
if(*str1 > *str2){
return 1;
}
if(*str1 < *str2){
return -1;
}
return 0;
}
五,strlen()
int strlen(const char *str){
if(str == NULL){
return 0;
}
char *p = str;
while(*p){
p ++;
}
return p - str;
}