memset函数

来源:百度知道 编辑:UC知道 时间:2024/06/08 15:37:43
#include "stdafx.h"
#include <string.h>
#include <stdio.h>
int main(void)
{
char buffer[] = "1\n";
printf("Buffer before memset: %s\n", buffer);
memset(buffer, '*', strlen(buffer) );
printf("Buffer after memset: %s\n", buffer);
return 0;
}
在这段程序中用‘*’代替了‘1’。可程序执行后第二行结果却有两个‘*’,为什么不是一个??

memset函数 是对一段内存赋值(常用来初始化),buffer所用的内存大小是2个字节,所以赋值后就得到2个“*”

void *memset( void *dest, int c, size_t count );
count
Number of characters
最后一个参数为替换的字符个数,,strlen(buffer)为2,,自然为两个'*'了,改为1就好了!

字符数组的长度为2,memset()就替换了2个,所以结果有2个 * 了