在 C 中获取字符串的一个特定标记

Get one specific token of string in C

我有一个包含文本的文件(<tab>\t):

display <tab> output_stmt
[ <tab> left_bracket
"Hello World" <tab> string_const
] <tab> right_bracket
~ <tab> term_sym

如何获取 <tab> 之后的字符串,跳过第一个字符串和 <tab> 每一行。

我只知道如何只获取第一个字符串并忽略该行的其余部分,方法是:

strtok(variablename, "\t");

非常感谢任何有用的答案。
谢谢!

使用strtok()函数你也可以获得下一个令牌。见 man page of strtok():

The strtok() function breaks a string into a sequence of zero or more nonempty tokens. On the first call to strtok() the string to be parsed should be specified in str. In each subsequent call that should parse the same string, str must be NULL.

所以你可以调用:

char* tokenOne = strtok(variablename, "\t"); /* first token  */
char* tokenTwo = strtok(NULL, "\t");         /* second token */

请注意,您不必释放内存,因为 strtok() 在更改输入缓冲区时会处理它,例如:

"display \t output_stmt[=11=]"

将是:

"display [=12=] output_stmt[=12=]"

strtok() 的调用之后。之后它只是 returns 指向下一个标记的指针。