用空格解析(sscanf 或 strtok)

问题描述 投票:0回答:1

对于某些上下文,我的游戏在终端中运行,就像命令行类型的游戏。目前处理命令是为每个命令执行一个 strcmp() ,这既不美观也不高效。正因为如此,我决定我应该重做一次。我尝试查看其他帖子,但没有发现任何有用的信息。我正在寻找的是它保存命令的每个部分。 例如:

    //let's just say command = "debug test"
    char part1;
    char part2;

    split via " "

    part1 = "debug"
    part2 = "test"

我尝试使用

sscanf()
,但它只会切断绳子。例如,假设我给了它字符串“test”。 它将输出:
test -> est -> st //and so on

c parsing scanf user-input
1个回答
0
投票

这是使用 strtok 的最小解决方案:

#include <stdio.h>
#include <string.h>

#define DELIM " "

int main() {
    char command[] = "debug test";
    char *part1 = strtok(command, DELIM);
    char *part2 = strtok(NULL, DELIM);
    printf("part=%s part2=%s\n", part1, part2);
}

和示例输出:

part=debug part2=test
© www.soinside.com 2019 - 2024. All rights reserved.