我见过各种控制台应用程序的“配置”文件(是的,文本文件),如下所示
<token> <value>
我将如何在 C 中解析这样的东西,其中 < value > 可以是字符串、字母甚至是整数/ float / double ?
我读到这个问题“How do I parse a token from a string in C?”,其中主要推荐使用 strtok,但它也不是线程安全的,我正计划生成多个线程(前提是我能够完成我的应用程序)
附言 这是 token 和值的示例
user username123
pass 123456
啊,我忘了棘手的部分。我还必须能够解析一个标记,它有多个值,或者用逗号分隔。
最佳答案
我认为 fgets()
和 sscanf()
是你的 friend :
int parseTokens(FILE *filePtr, char **tokens, char **values)
{
int i = 0;
char line[128];
while (fgets(line, 127, filePtr)) {
tokens[i] = malloc(64);
values[i] = malloc(64);
sscanf(line, "%s %s", tokens[i], values[i]);
i++;
}
return i;
}
int main(void)
{
char *tokens[20];
char *values[20];
FILE *filePtr = fopen("~/test.txt", "r");
if (!filePtr)
{
fprintf(stderr, "Error opening file: %s", strerror(errno));
}
int count = parseTokens(filePtr, tokens, values);
for (int i = 0; i < count; i++) {
printf("%s %s\n", tokens[i], values[i]);
free(tokens[i]);
free(values[i]);
}
fclose(filePtr);
}
关于c - 如何在 C 中制作 token 解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9917093/