我一直在尝试实现一个转换如下内容的函数:
12 13 3 4 0
进入整数数组,清除空格: int array [size] = {12,13,3,4,0};
代码(我尝试了两种实现):
(//master/record[ID=current()/MasterID]/Value)[1]
第一个实现有点工作,但我在sscanf行中得到valgrind错误。 第二个,不适用于数字> 10
答案 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++;
}