C和Arduino编程的新手,我的问题,如何将char c拆分成两个独立的整数变量? char c的值看起来像这个140,100
,两个数字都是整数。我需要从这些数据中创建两个整数变量SpeedX
和SpeedY
,以便SpeedX = 140
和SpeedY = 100
。谢谢你的帮助!
答案 0 :(得分:4)
如何将char c拆分为两个独立的整数变量?
char
。 您可以使用strtok()
函数拆分字符串(并指定要使用的分隔符),如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char nums[] = "140,100";
char *str;
int num;
int SpeedX, SpeedY, i = 0;
str = strtok (nums, ",");
while (str != NULL)
{
num = atoi(str);
if (i == 0)
SpeedX = num;
else if (i == 1)
SpeedY = num;
str = strtok (NULL, ",");
i++;
}
return 0;
}
注意:如果,一般来说在c而不是arduino中要解决此类问题,您不确定自己是否只有nums
中的两个元素 ,您应该使用 动态内存分配 (详细了解here),以及像这样修改你的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char nums[] = "140,100,500";
char *str;
int num;
int len, i = 0;
int *p;
str = strtok (nums, ",");
len = strlen(str);
p = malloc((len-1)*sizeof(int));
while (str != NULL)
{
num = atoi(str);
*(p+i) = num;
i++;
str = strtok (NULL, ",");
}
for (i = 0; i < len-1; i++)
printf("%d\n", *(p+i));
return 0;
}
答案 1 :(得分:3)
您正在谈论的char很可能是字符串或字符数组,它实际上是指向多个字符的指针。 char只能存储1个字符。
stdlib.h中定义的函数strtol有三个参数:
指向字符串开头的字符指针(或您想要开始查找的地方
指向char指针的指针,该指针将更新为指向数字结尾后的第一个字符
表示数字的基数,在您的情况下很可能为10
答案 2 :(得分:0)
您的数据类型可能是char*
或char[50]
,因为char
只能代表一个字符,而不是像"140,100"
这样的字符序列。
无论如何,使用sscanf
,它扫描字符串并根据给定的格式提取值:
char *myNums = "140,100";
int first,second;
int elementsRead = sscanf(myNums,"%d,%d", &first, &second);
// note: elementsRead is `2` if both format specifiers `%d` and `%d` have been scanned successfully