从C中的char数组中减去一条信息

时间:2013-02-22 23:48:50

标签: c regex filter arrays

我目前正在处理一段代码,我不知道如何解决这个问题。我解释一下情况:

这段代码的目标是在C中创建一个“动态”矩阵。使用“fgets”我得到一个char数组,我的代码将第一行解释为char数组。然而,我现在有更多的行只对第一行感兴趣,所有其他行只包含我需要存储的信息。

我之所以对第一行感兴趣,是因为它包含有关矩阵需要多大才能符合以下所有信息的信息。信息以一种模式出现,它始终以x,y的形式出现。 x和y不相互约束,x可以比y小10倍或更大。此外,该行信息的位置未设置,可以浮动在屏幕右侧或左侧。

是否有任何形式,如java中的正则表达式,我可以用来过滤信息?例如,在第一行中查找“,”并在找到它时从“,”检查右侧和左侧,一直到第一个空格,并将这两个值存储在变量中。

示例:

[                   14,10            ]

结果将是:

int rowSize = 14;
int columnSize = 10;

1 个答案:

答案 0 :(得分:1)

为什么不搜索第一个有效的十进制字符?

#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>

char *first_digit(const char *s)
{
    while (!isdigit(*s)) s++;
    return s;
}


int main()
{
    const char *line = "[             14,      10        ]";
    int n, k;

    const char *first = first_digit(line);
    const char *end;
    n = strtol(first, &end, 10);

    const char *second = first_digit(end);
    k = strtol(second, NULL, 10);

    printf("n, k = %d, %d\n", n, k);
    return 0;
}