如何从一个字符串中分隔一个数字

时间:2011-11-05 13:11:09

标签: c string

其实我需要处理像

这样的情况

我应该输入rows <n> “行”和数字<n>之间或任何单个非数字字符之间应该有空格。

我应该能够分离该字符串部分并将其分配给char变量并将数字部分分配给int ...

然后应该验证字符串部分是否是正确的命令..如果输入错误的命令,如“ada aad 99”或“adaha 9”或“adfad9”..它应该说“其错误的命令”

我尝试使用strtok(),但它无法处理字符串之间没有NULL的字符串..我尝试使用$ sscanf(string,"%s %*c %d",str, &num); 但它甚至不适用于所有可能性。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

我认为strtok没有问题,我认为这种情况会很完美。

在伪代码中:

line = getline();
split_line_into_tokens(line);
if tokens[0] == "command1" {
    if tokens_num > 2 {
        error("to many arguments to command1");
    } else if tokens_num < 2 {
        error("command1 needs one argument");
    } else {
        do_command_1(tokens[1]);
    }
} else {
    error("unknown command");
}

在上面的伪代码中,split_line_into_tokens()使用strtok创建令牌数组,使用空格作为分隔符。如果strtok返回一个空字符串(不是NULL),则会使用多个空格并跳过该字符串。 split_line_into_tokens创建tokens数组,第一个条目包含命令,其余包含参数。变量tokens_num设置为数组中的标记数。

答案 1 :(得分:0)

我认为strtok()正是您所需要的。如果您的程序是多线程的,则可能需要使用strtok_r()。隔离第二个令牌后,您需要使用atoi()strtol()(或其中一个类似函数)将其解析为数字。