我有一个表格中的字符串 “1 2 8 4 9 0”等我知道它将遵循整数,空格,整数格式......
然而,我无法保证长度。我知道最大长度,如果有帮助的话。 我想使用sscanf,但它需要有限数量的整数。
任何想法如何将“1 2 3”变成数组
A [0] = 1
A [1] = 2
A [2] = 3
谢谢!
答案 0 :(得分:2)
strtol
表示字符串失败的位置
对于像"1 2 3 ..."
这样的字符串,它会读取1
并在之后失败;如果您随后将该失败点(" 2 3 ..."
)传递给strtol
,它将会显示2
并在之后失败,......,...
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char input[] = "6 82 -7453 4 0 63 ";
char *err = " ", *curr = input;
int x, k = 0;
while (*curr && isspace((unsigned char)*err)) {
x = strtol(curr, &err, 10);
printf("#%d: %d\n", k++, x);
curr = err + !!*err; // do not advance past the '\0'
}
return 0;
}
See it in action - 与上面的代码段不同,ideone中的代码用1:/初始化k
,并且不能很好地处理以空格结尾的输入。< / p>
答案 1 :(得分:1)
使用
rc = sscanf(string, "%d%n", &array[i], &len);
在一个循环中。测试rc,并使用len跳到下一个项目。
答案 2 :(得分:0)
这真的不那么复杂:
strlen
malloc
<强> See it in action 强>
答案 3 :(得分:0)
许多方法之一可能是使用strtok
来将字符串标记为分隔符为空格&amp;每个strtok
调用的返回值可以与sscanf
一起用于单个整数。如您所知,最大长度可以迭代数组以与these lines上的sscanf
内容一起使用。
希望这有帮助!