您的位置:首页 > 其它

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

2018-01-11 16:07 344 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息