58 memset memmove memcpy


  • void *memset(void *dest , int c , size_t size); // เซ็ตค่าทุกไบต์เป็น c
  • void *memcpy(void *dest , void *src , size_t count); // คัดลอกข้อมูลในหน่วยความจำจาก src ไปไว้ที่ dest จำนวน count ไบต์
  • void *memmove(void *dest , void *src ,size_t count); // คล้ายๆ memcpy แต่ฟังก์ชั่นนี้จะทำเขียนทับค่าที่เขียนไปแล้วได้ ( overlapping blocks)
  • memset ทำงานได้ดีเฉพาะการเซ็ตค่าของ char ฟังก์ชั่นนี้ไม่เหมาะสำหรับการตั้งค่าอาเรย์ของ int , float ,double.

#include <stdio.h>
#define MAX 30
int main(void)
{
char str[MAX];
memset(str,'*',MAX);
str[MAX-1] = '\0';
printf("%s\n",str);
char buf[MAX];
memcpy(buf,str,MAX);
printf("%s\n",buf);
char msg[] = "123456789";
memmove(msg, msg+ 2 , 4);
printf("%s\n",msg);
return 0;
}