char * code片段

下面是我自己寫的一個demo中操作字符一點代碼片段, 查了不少關(guān)于char*操作的C函數(shù)資料, strtok ,strlcpy, strncpy, strstr, memcpy,strlen,strncpy 如果需要高效處理字符, 可以參照用法

const char *p; *p是const, p指向的內(nèi)容不能改變
char * const p; p是const, p不能改變指向

-(void)parse{

NSMutableDictionary *mdic = [NSMutableDictionary dictionary];

const char *notparsed = [cssStr UTF8String];

int len = strlen(notparsed)+1;//+1是因為strlen 不包含\0
char *p = malloc(len);
memcpy(p, notparsed, len);//memcpy會拷貝len個字符,不會因為遇到\0結(jié)束,也不會增加\0


char *step1_p = strtok(p, "}");//selector{a:b; c:d;}->{a:b;c:d;   
while (step1_p) {
   // printf("%s\n",step1_p);
    [self step2Sep:step1_p intoDic:mdic];
    step1_p = strtok(NULL, "}");//strtok函數(shù)會破壞被分解字符串的完整; 首次調(diào)用時,s指向要分解的字符串咐刨,之后再次調(diào)用要把s設(shè)成NULL ; [Linux內(nèi)核]2.6.29后可用速度更快的strsep()代替
    
}    

while (1) {

    char *a = strstr(notparsed, "{");//strstr判斷str2 是否是str1的子串, 這里是找出{在notparsed中出現(xiàn)的地址
    if (!a || strlen(a)==0) {
        break;
    }
    char *key = malloc(a-notparsed);
    strlcpy(key, notparsed, a-notparsed);//已知dest緩沖區(qū)足夠的情況下,將src(含'\0'結(jié)束符)字符串復(fù)制到dest
    
    char *b = strstr(a, "}");
    
    char *value = malloc(b-a-1);
    
    
    strlcpy(value, a+1, b-a-1);
    NSString *keyStr = [NSString stringWithUTF8String:key];

    NSDictionary *valueDic = [self parseValue:value];

    [mdic setObject:valueDic  forKey:keyStr];
    //printf("value:%s\n",value);

    notparsed = b+1;

}

const char *css_p = [cssStr UTF8String];

char *a = strstr(css_p, "{");

char *key = malloc(a-css_p);

strncpy(key, css_p, a-css_p);//如果src中有\(zhòng)0,則即使沒有復(fù)制到n個字符也會提前停止;只復(fù)制部分src內(nèi)容, dest剩余空間不填充時 后面可能會輸出亂字符. dest應(yīng)該有strlen(src)+1(\0)個字符長度, 最后一個字符不是\0時,要手動添加上\0

char *b = strstr(a, "}");

char *value = malloc(b-a);

strncpy(value, a+1, b-a-1);

printf("%p",a);

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蠢络,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子抬旺,更是在濱河造成了極大的恐慌崭倘,老刑警劉巖问芬,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悦析,死亡現(xiàn)場離奇詭異,居然都是意外死亡此衅,警方通過查閱死者的電腦和手機(jī)强戴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挡鞍,“玉大人骑歹,你說我怎么就攤上這事∧ⅲ” “怎么了道媚?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我最域,道長谴分,這世上最難降的妖魔是什么肄满? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任袖牙,我火速辦了婚禮,結(jié)果婚禮上撮执,老公的妹妹穿的比我還像新娘薄翅。我一直安慰自己钞馁,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布匿刮。 她就那樣靜靜地躺著,像睡著了一般探颈。 火紅的嫁衣襯著肌膚如雪熟丸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天伪节,我揣著相機(jī)與錄音光羞,去河邊找鬼。 笑死怀大,一個胖子當(dāng)著我的面吹牛纱兑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播化借,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼潜慎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蓖康?” 一聲冷哼從身側(cè)響起铐炫,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蒜焊,沒想到半個月后倒信,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡泳梆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年鳖悠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片优妙。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡乘综,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鳞溉,到底是詐尸還是另有隱情瘾带,我是刑警寧澤,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站看政,受9級特大地震影響朴恳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜允蚣,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一于颖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嚷兔,春花似錦森渐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至壶运,卻和暖如春耐齐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒋情。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工埠况, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棵癣。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓辕翰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親狈谊。 傳聞我的和親對象是個殘疾皇子喜命,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容