memset 和 memcpy 和 memcmp (strncmp遇到\0会中断)

int main()
{
	int a;
	//memset的作用用于给一段内存清0
	memset(&a, 0, sizeof(a));
	// 0000 0001 0000 0001 0000 0001 0000 0001
	memset(&a, 1, sizeof(a)); //给每一个字节设置指定的数
	printf("a = %d\n", a);


	int b[100];
	memset(&b[0], 0, sizeof(b));




	return 0;
}

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int a = 0;
int b = 0;

void func()
{

}
int main()
{
		char src[] = "hello\0abc";
	char dst[100] = {0};

	strncpy(dst, src, sizeof(src));
	memcpy(dst, src, sizeof(src));
	printf("dst = %s\n", dst);//hello
	printf("dst = %s\n", dst+strlen("hello")+1);//abc

	int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int b[10];
	memset(b, 1, sizeof(b));
	memset(b, 0, sizeof(b));
	//memcpy(b, a, 10*sizeof(int));
	memcpy(b, a, sizeof(a)); //最后一个参数为拷贝内存的字节大小,不是元素个数
	int i = 0;
	for (i = 0; i < 10; ++i)
	{
		printf("%d, ", b[i]);
	}
	printf("\n");
	getchar();
	return 0;
}
	//memcmp是比较内存区域buf1和buf2的前count个字节。该函数是按字节比较的。
	char p1[] = "hello\0abc";
	char p2[] = "hello\0tea";

	//int flag = strncmp(p1, p2, sizeof(p1));//0 遇到\0中断
	int flag = memcmp(p1, p2, sizeof(p1)); //-1
	printf("flag = %d\n", flag);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值