繁体   English   中英

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

[英]Subtracting a piece of information from a char array in C

我目前正在编写一段代码,但不确定如何解决此问题。 病情解释情况:

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

我之所以只对第一行感兴趣,是因为它包含有关矩阵需要多大才能适合以下所有信息的信息。 信息以一种模式出现,总是以x,y的形式出现。 x和y彼此不绑定,例如x可以比y小10倍或更大。 此外,该行上信息的位置也未设置,它可能浮动在屏幕的右侧或左侧。

是否可以使用任何形式(如Java中的regex)来过滤信息? 例如,在第一行中查找“,”,当找到该行时,检查从“,”一直到第一个空白的右侧和左侧,并将这两个值存储在变量中。

例:

[                   14,10            ]

结果将是:

int rowSize = 14;
int columnSize = 10;

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

#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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM