用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,';');
}
答
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;
}
感谢您的回答。我将使用'strchr',它具有令牌的参数,而不是位置i。 –
你不会改变循环中的'ch',所以它是一个无限循环。 – mch
感谢提起它 –