如何在C中用空格查找字符串/数组中的数字?

时间:2017-05-20 14:57:50

标签: c arrays string

例:
如果我有这个字符串/数组:" 123 45 6" (数字至少由一个空格分隔),我如何分开数字,以便我可以分别使用数字123,45和6?

我知道如何做到这一点。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

尝试strtol()<stdlib.h>中的原型)

char data[] = "123 45 6";
char *p = data;

while (*p) {
    long k = strtol(p, &p, 10);
    /* add error checking */
    printf("%ld\n", k);
}

答案 1 :(得分:0)

虽然我发现strtol - png是最优雅的方法,但我还提出了一种利用"%n" - scanf特征的方法。此功能返回到目前为止扫描的字符数,可用于指向要读入的下一部分:

int main() {

    const char *data = "123 45 6  ";

    while (data && *data) { 
        int value=0;
        int index=0;
        if (sscanf(data,"%d%n",&value,&index) != 1)
            break;

        printf("%d\n", value);
        data+=index;
    }
}

答案 2 :(得分:-1)

您必须创建一个函数,该函数将字符串拆分为双字符串数组,并使用空格作为分隔符。

此功能的原型将是例如:

char **StrSplit(char *str, char c);

然后你可以在你的代码中使用str作为要从中获取数字的字符串,并将c作为空格字符(或用作分隔符的任何字符)。

它将返回一个双字符串数组,在每个条目中包含每个数字的字符串。

然后你可以使用函数atoi将每个条目(包含一串数字)转换为整数。