用strchr在C中迭代字符串

用strchr在C中迭代字符串

问题描述:

如果我有一个字符串,如char str [] = "hello;people;how;are;you" 并使用strchr(str,";")如何获取字符串的第N个标记?用strchr在C中迭代字符串

假设你在储存,和strchr在一个char * CH

然后CH-STR + 1将返回你所期望的是,和strchr

使用预定义子功能或定义的字符的位置你自己的函数,你可以创建一个while循环是这样的:

i=0; 
while(ch != NULL) 
{ 
    printf("Your subsrting is : %s", substring_function(i,(ch-str+1))); 
    i = ch-str+1; 
    ch=strchr(ch+1,';'); 
} 
+0

感谢您的回答。我将使用'strchr',它具有令牌的参数,而不是位置i。 –

+0

你不会改变循环中的'ch',所以它是一个无限循环。 – mch

+0

感谢提起它 –

OK,找到了解决方案与strtok,我想它使用strchr转换。 Tokenizer是包含用于标记化的字符的静态变量。有任何想法吗?

static const char *a(const char *string,int tkn) { 
    char *tokenized=strdup(string); 
    char *token; 
    token=strtok(tokenized, tokenizer); 
    int i=0; 
    while(token != NULL) { 
     if (i == (tkn-1)) { 
     break; 
     } 
     token = strtok(NULL, tokenizer); 
     i++; 
    } 
    return token; 
} 
+0

这种方法是一个内存泄漏,因为分配的'tokenized'不一定可以为以后的'免费()'。 – chux

+0

非常感谢,我可以加一个免费的。除此之外? –

+0

“我可以添加一个空闲” - >它不是那么简单,因为代码返回一个指针到分配的内存中,但已经失去了开始。建议发布一个答案,使用您的“添加免费”的想法。 – chux