第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

C中帶有分隔符的拆分字符串

C中帶有分隔符的拆分字符串

C++ C
墨色風(fēng)雨 2019-06-05 15:58:51
C中帶有分隔符的拆分字符串如何編寫函數(shù)來拆分和返回C編程語言中帶有分隔符的字符串的數(shù)組?char* str = "JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC";str_split(str,',');
查看完整描述

3 回答

?
qq_遁去的一_1

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊

我認(rèn)為strsep仍然是最好的工具:

while ((token = strsep(&str, ","))) my_fn(token);

從字面上說,這是一條分隔字符串的行。

額外的括號(hào)是一個(gè)樣式元素,表示我們有意測(cè)試賦值的結(jié)果,而不是相等操作符。==.

為了讓這種模式發(fā)揮作用,tokenstr兩者都有類型char *..如果以字符串文字開頭,那么首先要復(fù)制它:

// More general pattern:const char *my_str_literal = "JAN,FEB,MAR";char *token, *str, *tofree;tofree = str = strdup(my_str_literal);  
// We own str's memory now.while ((token = strsep(&str, ","))) my_fn(token);free(tofree);

如果兩個(gè)分隔符同時(shí)出現(xiàn)在str,你會(huì)得到一個(gè)token值,這是空字符串。價(jià)值str被修改,因?yàn)橛龅降拿總€(gè)分隔符都被一個(gè)零字節(jié)覆蓋-這是復(fù)制首先解析的字符串的另一個(gè)很好的理由。

在評(píng)論中,有人建議strtokstrsep因?yàn)?/trans>strtok更便于攜帶。Ubuntu和MacOSXstrsep這是安全的猜測(cè),其他單一系統(tǒng)也是如此。窗缺strsep,但它有strbrk使這短暫而甜蜜的strsep替換:

char *strsep(char **stringp, const char *delim) {
  if (*stringp == NULL) { return NULL; }
  char *token_start = *stringp;
  *stringp = strpbrk(token_start, delim);
  if (*stringp) {
    **stringp = '\0';
    (*stringp)++;
  }
  return token_start;}

這里是一個(gè)很好的解釋strsepVSstrtok..利弊可能是主觀判斷的,不過,我認(rèn)為這是一個(gè)很好的跡象strsep被設(shè)計(jì)為strtok.


查看完整回答
反對(duì) 回復(fù) 2019-06-05
?
開心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊

字符串標(biāo)記器-這段代碼應(yīng)該將您帶到正確的方向。

int main(void) {
  char st[] ="Where there is will, there is a way.";
  char *ch;
  ch = strtok(st, " ");
  while (ch != NULL) {
  printf("%s\n", ch);
  ch = strtok(NULL, " ,");
  }
  getch();
  return 0;}


查看完整回答
反對(duì) 回復(fù) 2019-06-05
  • 3 回答
  • 0 關(guān)注
  • 834 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)