我正在做一个简单的词法分析器 C 程序。我首先要做的是将输入的语句标记化。 (示例语句:printf1234==---abc)
如何使用 strtok() 分隔“printf”、“1234”、“=”、“---”和“abc”?
这是我的实验代码:
#include <stdio.h>
#include <string.h>
#include <conio.h>
void main()
{
char input_string[100];
char string_storage[100][100];
char *token;
printf("Enter a string: ");
gets(input_string);
token = strtok(input_string, " ");
while(token != NULL)
{
printf("%s\n",token);
//strcpy(input_storage,token);
token = strtok(NULL, " ");
}
getch();
}
最佳答案
strtok 是基于分隔符进行空间 segmentation 。这里你没有明确的分界线。您正在寻找语义子部分,它基于您期望在每个 token 中包含的内容类型。您应该查看一下正则表达式理论。您现在应该限制输入语句,例如您有一个文本命令,然后是数字,然后始终是 = 符号,等等。
关于c - 如何扫描输入字符串以获取 token 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48171062/