如何使用c

时间:2018-02-18 00:44:40

标签: c windows

我发现这个代码用于将字符串转换为单独的字符串:

const char *s = " ,.?\n\0";

char *token;

/* get the first token */

token = strtok(buffer, s);

/* walk through other tokens */

while( token != NULL ) {

printf( " %s\n", token );
     token = strtok(NULL, s);

包含字符串的缓冲区。

我现在遇到的问题是,我想要计算令牌(子字符串)出现次数并将其打印给用户。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

使用带有令牌及其计数器作为成员的结构,然后使用动态数组或列表或其他类似容器的数据结构,可以相对简单地完成。

当您阅读令牌时,查看您是否已将其保存,然后增加其计数器。否则加上一个计数。

答案 1 :(得分:0)

如果您只想计算buffer中特定令牌的次数,并且令牌是strtok()返回的自己的子串,则不会与{{}返回的其他字符串混在一起。 1}}

strtok()

如果你想计算int main(void) { const char *s = " ,.?\n\0"; char *token; char buffer[] = "123 456 789 456 123"; char myToken[] = "456"; int num = 0; /* get the first token */ token = strtok(buffer, s); /* walk through other tokens */ while (token != NULL) { if (strcmp(token, myToken) == 0) { num++; } token = strtok(NULL, s); } printf("%d\n", num); } 返回的每个字符串的出现次数,那么你需要一些更复杂的东西,如SomeProgrammerDude的答案所述,来跟踪看到的每个字符串。