assert:函数原型是:void assert( int expression );其作用是现计算表达式 expression ,如果其值为假(即为0),那么它先 stderr 打印一条出信息,然后通过调用 abort 来终止程序运行。使用assert 的缺点是,频繁的调用会影响程序的性能,增加额外的开销。(需要包含头文件#include assert.h)
strcat:函数原型是char *strcat(char *dest, const char *src);使用方src所指向的字符串(包括'\0')复制到dest所指向的字符串后面(删除*dest原来末尾的'\0')。要保证*dest足够长,以容纳被复制进*src中原有的字符不变,返回指向dest的指针。
assert--代码展示
- #include
- #include
-
- int main()
- {
- char* mystrcpy(char *a,char *b)
- {
- assert(a != NULL && b != NULL);//调用断言
- char *result = a;//保存a的地址
- while(*b != '\0')
- {
- *a++ = *b++;//b的值给a并开始偏移
- }
- *a = '\0';//b=‘\0’后a=‘\0’
- return result;
- }
-
- char a[128] = {'\0'};
- char *b = "hello word";
- char *c = NULL;//验证断言
-
- mystrcpy(a,b);//不会断言正常输出
- puts(a);
-
- mystrcpy(c,b);//断言后会终止程序
- puts(c);
-
- return 0;
- }

strcat--代码展示
- #include
- #include
- #include
-
- char* mystrcat(char *dest,char *src)
- {
- assert(dest != NULL && src != NULL);
- char *result = dest;
- while(*dest != '\0')
- {
- dest++;//不等于'\0'发生偏移
- }
- while(*src != '\0')
- {
- *dest++ = *src++;
- }
- *dest = '\0';
-
- return result;
- }
-
- int main()
- {
- char a[128] = "hello ";
- char *b = "world";
- char *c;
-
- c = mystrcat(a,b);//将b拼接给a
- puts(c);
-
- return 0;
- }
