1.內存充填
void *memset(void *s,int ch,size_t n);
是由C Run-time Library提供的提供的函數,作用是在一段內存塊中填充某個給定的值,它是對較大的結構體或數組進行清零操作的一種最快方法。由於是語言層面提供,所以可跨平台使用。
示例:
char str[] = "almost every programmer should know memset!"; memset (str,'-',6);
2.內存拷貝
void *memcpy(void *dest, const void *src, size_t n); memcpy指的是c和c++使用的內存拷貝函數,memcpy函數的功能是從源src所指的內存地址的起始位置開始拷貝n個字節到目標dest所指的內存地址的起始位置中。 C語言:#include<string.h> C++:#include<cstring>
3.比較兩個字符串
extern int strcmp(const char *s1,const char *s2); 當s1<s2時,返回為負數; 當s1==s2時,返回值= 0; 當s1>s2時,返回正數。 即:兩個字符串自左向右逐個字符相比(按ASCII值大小相比較),直到出現不同的字符或遇'\0'為止。
int strncmp ( const char * str1, const char * str2, size_t n ); str1, str2 為需要比較的兩個字符串,n為要比較的字符的數目。
4.拷貝字符串,
char * strcpy(char* destination,const char * source); 這里,需要注意strcpy僅僅復制到null字符就結束了。 將由source指針指示的C 字符串(包括結尾字符)復制到destination指針指示的區域中。 該函數不允許source和destination的區域有重疊,同時,為了避免溢出,destination區域應該至少和source區域一樣大
返回目標串的地址。
char* strncpy(char* destination,const char* source,size_t num); strncpy:復制source的前num字符到destination。 如果遇到null字符('\0'),且還沒有到num個字符時,就用(num - n)(n是遇到null字符前已經有的非null字符個數)個null字符附加到destination。返回目標串的地址。 注意:並不是添加到destination的最后,而是緊跟着由source中復制而來的字符后面。下面舉例說明: char des[] = "Hello i am!"; char source[] = "abc\0def"; strncpy(des,source,5); 此時,des區域是這樣的:a,b,c,\0,\0,i,空格,a,m,! ??? \0,\0並不是添加在!的后面。
5.內存移動
void * memmove(void* destination,const void* source,size_t num);
memmove:同memcpy完成同樣的功能,區別是,memmove允許destination和source的區域有重疊。而其他三個函數不允許。 例子:char str[] = "This is a test!"; memmove(str+2,str+10,4); 此時,str變成:Thtests a test!