1.memset
#include <stdio.h> #include <string.h> int main() { //char *s="My Dream Come true";//用來初始化字符指針的字符串常量會被編譯器安排到只讀數據存儲區,是不可以修改的 char s[] ="My Dream Come true";//在棧中分配空間 memset(s,'b',6);//以字節為單位 printf("%s\n",s);//bbbbbbam Come true return 0; }
memset可以方便的清空一個結構類型的變量或數組。
例:
變量:struct position pos;
memset(&pos,0,sizeof(struct position));
數組:
struct position pos[10];
memset(pos,0,sizeof(struct position)*10);
2.memcpy
通常在復制字符串時用strcpy,而需要復制其他類型數據時則一般用memcpy
memcpy可以復制任意內容,例如字符數組、整型、結構體、類等
//memcpy用來做內存拷貝,你可以拿它拷貝任何數據類型的對象,可以指定拷貝的數據長度 #include <stdio.h> #include <string.h> int main() { char a[27]={'\0'}, b[30]={'\0'}; for(int i=0;i<26;i++) a[i] = 'A'+ i; memcpy(b, a, sizeof(b));//將a數組中的內容拷貝到b數組中去,b數組長度不應小於a puts(b);//ABCD.....Z return 0; }
如果上面的b數組長度小於a,則b中先會被賦值和b數組等長的字符串,另外,會追加整個a數組的字符串