字符串中的assert和strcat

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;
}

字符串中的assert和strcat_第1张图片


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;
}

5e5c84252d184aca8b77f52a5ea46eb9.png

你可能感兴趣的:(c#,算法)