C - 由空格分隔为整数数组的数字字符串

时间:2017-11-23 13:27:47

标签: c arrays string

我一直在尝试实现一个转换如下内容的函数:

12 13 3 4 0

进入整数数组,清除空格: int array [size] = {12,13,3,4,0};

代码(我尝试了两种实现):

(//master/record[ID=current()/MasterID]/Value)[1]

第一个实现有点工作,但我在sscanf行中得到valgrind错误。 第二个,不适用于数字> 10

2 个答案:

答案 0 :(得分:1)

您可以使用^@m^@i^@c^@r^@o^@s^@o^@f^@t^@ 从整个字符串中获取一个数字作为字符串标记,然后将其转换为整数。您必须包含strtok才能使用该功能。

  

C库函数char * strtok(char * str,const char * delim)使用分隔符delim将字符串str分解为一系列标记。

在这里,您的分隔符将是一个空格" "

  

第一次调用strtok()会返回指向s1指向的字符串中第一个标记的指针。对strtok()的后续调用必须将NULL指针作为第一个参数传递,以便获取字符串中的下一个标记。这些对strtok()的调用中使用的分隔符集可以不同于对下一个调用的调用。

这是代码:

string.h

注意:此代码适用于您的逻辑:)

参考:

答案 1 :(得分:0)

也许最容易的是一个越过界限的循环,例如

char *ptr= line;
int i= 0;
while (*ptr) {
    if (*ptr>='0'&&*ptr<='9') {
        arr[i]= 0;
        while (*ptr>='0'&&*ptr<='9') arr[i] = arr[i]*10 + *ptr++ - '0';
        i++;
        if (i>=N) break;  // array full
    }
    else ptr++;
}