C语言-assert断言

文章展示了C语言中assert宏的作用,当条件不满足时程序会终止执行。同时,提供了一个自定义的字符串复制函数myStrncpy,该函数在源字符串复制到目标字符串后,会将目标字符串剩余部分初始化为。在main函数中,使用assertStr为NULL导致assert宏触发,程序终止,因此没有执行字符串复制操作。
摘要由CSDN通过智能技术生成

 assert 宏的原型定义在 assert.h 中,其作用是如果它的条件返回错误,则终止程序执行。

#include <assert.h>
void assert( int expression );

assert(expression)  作用是判断参数内的是否为真,如果为假,那么它先向 stderr 打印一条出错信息,然后通过调用 abort 来终止程序运行。
if()else用法一致,

#include<stdio.h>
#include <assert.h>

char* myStrncpy(char *des,char *src,int count)
{
	assert(des!=NULL);//断言 assert(expect)--
	assert(src!=NULL);
	char *bak=des;
while( *src!='\0'&&count>0)//判断最后一个字符为'\0'
	{
		*des++=*src++;
		count--;
	}
	if(count>0)
//copy完了内存后,count任然大于0,就把目标内存后面全部初始化'\0'
	{
		while(count>0)
		{
			count--;
			*des++='\0';
		}
		return des;
	}
	*des='\0';   
	return bak; 
}
int main()
{
	char *p="helloworld";
	char str[128]={'\0'};
	char *assertStr=NULL;
	
	//提示
	printf("把p的字符串copy到str:\n");
	myStrncpy(assertStr,p,9);
	puts(str);
	
	return 0;   
}

 输出结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值