美文网首页
char * code片段

char * code片段

作者: cocoa村长 | 来源:发表于2017-11-10 17:15 被阅读0次

下面是我自己写的一个demo中操作字符一点代码片段, 查了不少关于char*操作的C函数资料, strtok ,strlcpy, strncpy, strstr, memcpy,strlen,strncpy 如果需要高效处理字符, 可以参照用法

const char *p; *p是const, p指向的内容不能改变
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结束,也不会增加\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函数会破坏被分解字符串的完整; 首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL ; [Linux内核]2.6.29后可用速度更快的strsep()代替
    
}    

while (1) {

    char *a = strstr(notparsed, "{");//strstr判断str2 是否是str1的子串, 这里是找出{在notparsed中出现的地址
    if (!a || strlen(a)==0) {
        break;
    }
    char *key = malloc(a-notparsed);
    strlcpy(key, notparsed, a-notparsed);//已知dest缓冲区足够的情况下,将src(含'\0'结束符)字符串复制到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中有\0,则即使没有复制到n个字符也会提前停止;只复制部分src内容, dest剩余空间不填充时 后面可能会输出乱字符. dest应该有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);

}

相关文章

  • char * code片段

    下面是我自己写的一个demo中操作字符一点代码片段, 查了不少关于char*操作的C函数资料, strtok ,s...

  • iOS 自定义代码块&Swift中自定义log

    自定义代码片段(code snippets) Xcode的代码片段(Code Snippets)创建自定义的代码片...

  • Postman--Generate Code Snippets

    1. Generate Code Snippets Postman 生成对应语言的code片段。 点击Code图标...

  • vscode用户代码片段

    vue代码片段(xxx.code-snippets(全局)) JavaScript 代码片段 ( javascri...

  • Xcode代码块

    代码片段 Xcode的代码片段(Code Snippets)创建自定义的代码片段,当你重用这些代码片段时,会给你带...

  • Xcode10 代码块(Code Snippet)

    什么是代码Code Snippet? Xcode的代码片段(Code Snippets)就是我们敲代码时的自动提示...

  • iOS开发奇技淫巧之Code Snippet

    什么是Code Snippet ? Code Snippet直译为代码片段,可能你对这个名词不太了解,但是我相信在...

  • 代码片段(Code Snippets)

    你之前可能已经使用过Xcode的代码片段(Code Snippets)功能了,一些常见的是for in片段和dis...

  • VS code代码片段

    代码片段的作用及生成方式 在我们使用vue的过程中,有些代码片段是经常需要些的,我们就可以在VS code中生成一...

  • 创建自定义的代码片段

    Xcode的代码片段(Code Snippets)创建自定义的代码片段,当你重用这些代码片段时,会给你带来很大的方...

网友评论

      本文标题:char * code片段

      本文链接:https://www.haomeiwen.com/subject/hazbmxtx.html