首页 > 解决方案 > 如何获取带有前置字符的输入?

问题描述

我正在尝试scanf()用于这种特定类型的输入。输入如下

n = 2
m = 3

我知道scanf("%d %d", &n, &m);由于“n =”和“m =”的存在而无法完成工作,我不应该使用scanf()吗?还是可以使用某种正则表达式或任何东西来完成?

标签: cscanf

解决方案


如果您输入的形式是:

<name><zero or more spaces>=<zero or more spcaes><number>
<name><zero or more spaces>=<zero or more spcaes><number>

您可以通过使用和使用继续阅读直到找到 a来阅读该<name>部分而不存储它。%*[^=]'='

它可能看起来像:

int main(void) {
    int n,m;
    if (scanf("%*[^=] = %d %*[^=] = %d", &n, &m) != 2) 
    {
        printf("bad input\n");
    }
    else
    {
        printf("Now n is %d and m is %d\n", n, m);
    }
    return 0;
}

它将处理如下输入:

n = 2
m = 3

nnnnnn                   =20
mmmmmmm =           100

n = 2
m=3

甚至单行输入,例如:

n      =              2037  m=3733

推荐阅读