例:
如果我有这个字符串/数组:" 123 45 6" (数字至少由一个空格分隔),我如何分开数字,以便我可以分别使用数字123,45和6?
我知道如何做到这一点。
感谢您的帮助!
答案 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将每个条目(包含一串数字)转换为整数。