char 類型的操作函數


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!

 

 

 

 

 

 

 

 
 
 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM