久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Linux C 字符串操作的基本使用

 通信小兵 2012-03-09

 Linux C 字符串操作的基本使用


所屬頭文件:<string.h>

0,、獲取字符串長度:int strlen(char *s)

int strlen(char *s)

函數(shù)說明:此函數(shù)用于獲取s的長度,,不包括'\0'注:切記最好保證s的尾部是'\0',strlen函數(shù)讀到'\0'會自動停止然后統(tǒng)計(jì)字符數(shù)
返回值:字符數(shù)

1,、查找指定的字符:index函數(shù),rindex函數(shù),strchr函數(shù) strrchr(其中index函數(shù)和strchr函數(shù)基本相同,rindex函數(shù)和strchr函數(shù)相同)

(1)char *index(const char* s, char c) char *strchr(const char* s, char c)
函數(shù)說明:index函數(shù)用于查找字符串s中第一個(gè)出現(xiàn)c字符的地址,,然后將該字符的地址返回.strchr函數(shù)與index相似
返回值:若找到指定到字符則返回該字符的地址,否則返回0
舉例: 
  char s[] = "abcdeabcde";
  char *sdest = NULL;
  sdest = index(s,'d');
  printf("sdest: %s\n",sdest);
輸出結(jié)果:sdest: deabcde
 
 (2)char *rindex(const char* s, char c) char *strrchr(const char* s, char c)

函數(shù)說明:類似于index函數(shù),,但是他是從字符串開始查找字符c,,并返回從字符串尾部開始第一個(gè)符合條件的字符的地址(strrchr與rindex相似)
返回值:同index一樣
舉例:
  char s[] = "abcdeabcde";
  char *sdest = NULL;
  sdest = rindex(s,'d');
  printf("sdest: %s\n",sdest);
輸出結(jié)果:sdest: de

2、查找滿足條件字符串中任意一個(gè)字符:strpbrk函數(shù)

char *strpbrk(const char *s, const char *accept)
函數(shù)說明:查找s字符串第一個(gè)符合accept字符串中任意一個(gè)字符的字符的地址
返回值:符合條件的字符的地址
舉例:
  char s[] = "abcdefgefgbe";
  char t[] = "omgf";
  char *d = NULL;
  d = strpbrk(s,t);//應(yīng)該會從s中找到‘f'字符的地址
  if(d != 0)
  {
    printf("原字符串: %s\n",s);
    printf("獲得到字符串: %s\n",d);
  }
輸出結(jié)果:
原字符串: abcdefgefgbe
獲得到字符串: fgefgbe

3,、統(tǒng)計(jì)字符串中連續(xù)包含或不包含指定字符串內(nèi)容到字符數(shù):strspn函數(shù) ,strcspn函數(shù)

(1)size_t strspn(const char *s, const char *accept)
函數(shù)說明:從s的開頭開始計(jì)算連續(xù)的字符,,這些字符都屬于accept中字符,遇到不是accept中的字符則停止,,并返回字符個(gè)數(shù)n,,即代表s開始處有連續(xù)n個(gè)屬于accept字符串的字符.
返回值:返回s字符串起始位置開始連續(xù)屬于accept字符串的字符個(gè)數(shù)
舉例:
  char s[] = "abcdefgefgmmmmmbbe";
  char t[] = "bcdaefg";
  int inumber = 0;
  inumber = strspn(s,t);
  printf(" %d\n",inumber);
輸出結(jié)果:10

(2)size_t strcspn(const char *s,const char *reject)

函數(shù)說明:與strspn相反,從s的開頭開始計(jì)算連續(xù)不屬于reject的字符數(shù),,并返回字符個(gè)數(shù)n,即代表s開頭處有n個(gè)不屬于accept字符串的字符,。
返回值:返回s字符串起始位置開始連續(xù)不屬于accept字符串到字符個(gè)數(shù)
舉例:
  char s[] = "abcdefgefgmqmmmmbbe";
  char t[] = "mq";
  int inumber = 0;
  inumber = strcspn(s,t);
  printf(" %d\n",inumber);
輸出結(jié)果:10

4、查找指定字符串:char *strstr(const char *s, const char *need);

函數(shù)說明:從s中找到與need匹配到子字符串,,并將該子字符串的地址返回
返回值:匹配的子字符串的起始地址
舉例:
  char s[] = "abcdefgefgmqmmmmbbe";
  char t[] = "fge";
  char *score = NULL;
  score = strstr(s,t);
  printf(" %s\n",score);
輸出結(jié)果:
 fgefgmqmmmmbbe

5,、字符串分割:char *strtok(char *s, const char *delim)

函數(shù)說明:strtok函數(shù)將s按照delim字符串中的字符分割成一個(gè)個(gè)子字符串,對于字符串s,,當(dāng)遇到delim中到字符,,則將該字符替換成'\0'然后返回'\0'之前的字符串子串。若繼續(xù)分割,,則將第一個(gè)參數(shù)設(shè)置為NULL,程序會從上一次分割結(jié)束的位置('\0'之后)開始繼續(xù)分割,,若已經(jīng)無法分割則返回NULL
返回值:分割所得到子字符串的地址.,若無法分割則返回NULL
舉例:
  char s[] = "abc:bcd:ef bg_op fq:yz_dd";
  char t[] = ": _";
  char *score = NULL;
  /*第一次調(diào)用*/
  if((score = strtok(s,t)) == NULL)
  {
    printf("failed!\n");
    return 0;
  }
  printf("%s;",score);
  /*繼續(xù)分割,,將第一個(gè)參數(shù)這是為NULL*/
  while((score = strtok(NULL,t)))
  {
    printf("%s;",score);
  }

輸出結(jié)果:
abc;bcd;ef;bg;op;fq;yz;dd;

6,、字符串比較:strcmp函數(shù), strncmp函數(shù),strcasecmp函數(shù),strncasecmp函數(shù)

(1)int strcmp(const char *s1,const char *s2);
函數(shù)說明:s1字符串與s2字符串從開頭開始逐字符比較,先用s1的第一個(gè)字符的ASCII碼的值與s2到第一個(gè)字符值到ASCII碼值相減,,若差值等于0,則繼續(xù)用s1,s2字符串的第二個(gè)字符比較,,若不等于0則返回差值。所有字符比較完后差值依然為0,,但是其中一個(gè)字符串長度較長,,如s2比s1多一個(gè)字符'a',那么返回差值0-'a'的值
返回值:若兩個(gè)字符串完全相同則返回0,,否則返回字符差值 
舉例:
  char s1[] = "abcdefg";
  char s2[] = "abcdefgopq";
  char s3[] = "abcdefm";
  printf("s1與s2比較:%d\n",strcmp(s1,s2));
  printf("s1與s3比較:%d\n",strcmp(s1,s3));
  return 1;

輸出結(jié)果:
s1與s2比較:-111

s1與s3比較:-6


(2) int strncmp(const char *s1,const char *s2,size_t n);
函數(shù)說明:原理與strcmp函數(shù)一樣,,只不過多了一個(gè)參數(shù)來限制比較用于比較的字符的個(gè)數(shù)不能超過n,如果兩個(gè)字符串前n個(gè)字符完全一樣則返回0,相比strcmp,strncmp函數(shù)靈活性更強(qiáng),。

返回值:若兩個(gè)字符串完全相同則返回0,,否則返回字符差值 


(3)int strcasecmp(char *s1, char *s2)
函數(shù)說明:與strcmp相似,只不過比較的時(shí)候忽略大小寫差異

返回值:在忽略大小寫的情況下,,若兩個(gè)字符串完全相同則返回0,,否則返回字符差值 


(4)int strncasecmp(char *s1, char *s2,size_t n)
函數(shù)說明:于strcasecmp函數(shù)相比,多了個(gè)參數(shù)限定比較字符的個(gè)數(shù)
返回值:在忽略大小寫的情況下,,若兩個(gè)字符串完全相同則返回0,,否則返回字符差值 

7、字符串復(fù)制:strcpy函數(shù),、strncpy函數(shù),、strdup函數(shù)

(1)char *strcpy(char *dest, const char *src)
函數(shù)說明:將src字符串到內(nèi)容拷貝到dest指向到字符串中,注:拷貝的長度由src字符串的'\0'空字符的位置決定,,因此使用到時(shí)候要考慮到src末尾是否有空字符,,并且考慮dest字符串的大小,有可能dest無法容納src導(dǎo)致溢出
返回值:dest字符串的起始位置
舉例:
char dest[50];
char src[] = "adfdasfa";
printf("%s",strcpy(dest,src));

輸出結(jié)果: adfdasfa

(2)char *strncpy(char *dest, const char *src, size_t n)

函數(shù)說明:與strcpy用法類似,,將src最多前n個(gè)字符拷貝到dest,如果src長度小于n則到'\0'為止,,相比strcpy,strncpy函數(shù)安全性更高,,使用更靈活
返回值:dest字符串的起始位置

(3)char *strdup(char *src)

函數(shù)說明:會調(diào)用malloc函數(shù)動態(tài)分配一塊大小與src一樣的內(nèi)存,,然后將src的內(nèi)容拷貝到該塊內(nèi)存中,并將內(nèi)存的起始地址返回,,這意味著如果我們不再需要這個(gè)字符串的副本,,我們最好使用free()將它釋放。
返回值:復(fù)制成功后的字符串的地址,,若失敗則返回NULL

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多