在 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 指向下一个标记的指针。
我有一个包含文本的文件(<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 tostrtok()
the string to be parsed should be specified instr
. In each subsequent call that should parse the same string,str
must beNULL
.
所以你可以调用:
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 指向下一个标记的指针。