我有一个字符串,它的形式是 “1 2 8 4 9 0”等。我知道它会遵循整数、空格、整数...的格式。
但是,我不能保证长度。我知道最大长度,如果有帮助的话。 我想使用 sscanf,但它需要有限数量的整数。
关于如何将“1 2 3”变成数组的任何想法
A[0] = 1
A[1] = 2
A[2] = 3
谢谢!
最佳答案
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
,并且不能很好地处理以空格结尾的输入。
关于c - 可变长度的字符串到int数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7840842/