有没有办法在C中计算令牌?
我正在使用strtok
将字符串拆分为令牌。 有没有人知道任何实际计算令牌数量的函数?
我有一个命令字符串,我需要拆分它并将参数传递给execve()
。
谢谢!
编辑
execve
将参数作为char**
,所以我需要分配一个指针数组。 我不知道有多少分配而不知道有多少令牌。
一种方法是简单地将strtok
与计数器一起使用。 但是,这将修改原始字符串。
另一种方法是在循环中使用strchr
,如下所示:
int count = 0; char *ptr = s; while((ptr = strchr(ptr, ' ')) != NULL) { count++; ptr++; }
如果您有多个分隔符,请使用strpbrk
:
while((ptr = strpbrk(ptr, " \t")) != NULL) ...
因为令牌的数量只不过是所使用的定界符的出现频率。 所以你的问题归结为找不到。 字符串中出现字符的次数
说c中strtok函数中使用的分隔符是”
int count =0,i; char str[20] = "some string here"; for(i=0;i
代币数量与count + 1相同