memset,memcpy 函数

memset 

void *memset(void *str, int c, size_t n)

memset作用是吧n个c字符复制到字符串str的前n个位置:

#include <stdio.h>
#include <string.h>

int main(int argc, char const *argv[])
{
	
	char des[]="this is a string..";
	
	memset(des,'2',6);

	puts(des);

	return 0;
}

输出:

 222222s a string..

memcpy

void *memcpy(void *str1, const void *str2, size_t n)

memcpy作用是:从存储区 str2 复制 n 个字符到存储区 str1 

#include <stdio.h>
#include <string.h>

int main(int argc, char const *argv[])
{
	char src[40];
	char dest[100];

	memset(dest,'\0',sizeof(dest));
	strcpy(src,"this is ----");
	strcpy(dest,src);

	printf("%s\n",dest);
	

	return 0;
}

输出:

this is ----

编写my_memcpy:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
void my_strcpy(char *des,const char *str){

	puts("my_strcpy");

	if(str==NULL){
		des=NULL;
		return;
	}
	assert(des!=NULL);
	

	memset(des,'\0',strlen(des)+1);
	for (int i = 0; i <strlen(str); ++i)
	{
		des[i]=str[i];
	}

	puts(des);
}

int main(int argc, char const *argv[])
{
	char src[40];
	char dest[100];

	memset(dest,'\0',sizeof(dest));
	my_strcpy(src,"this is ----");
	my_strcpy(dest,src);

	printf("%s\n",dest);


	return 0;
}

 C assert()异常处理:

转自:https://www.cnblogs.com/vimsk/archive/2010/12/11/1901698.html

assert()是一个调试程序时经常使用的宏,切记,它不是一个函数,在程序运行时它计算括号内的表达式,如果表达式为FALSE  (0),  程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。   

猜你喜欢

转载自blog.csdn.net/qq_32095699/article/details/88581730