C和Arduino编程的新手,我的问题,如何将char c拆分为两个单独的整数变量? char c 的值看起来像这样 140,100
,两个数字都是整数。我需要根据这些数据创建两个整数变量,SpeedX
和SpeedY
,以便SpeedX = 140
和SpeedY = 100
。感谢您的帮助!
如何将字符 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
中只有两个元素 ,你应该使用动态内存分配(在这里阅读更多关于它的信息),并像这样修改你的代码:#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("%dn", *(p+i)); return 0; }
你说的字符很可能是字符串或字符数组,它实际上是指向许多字符的指针。一个字符只能存储 1 个字符。
在 stdlib.h 中定义的函数 strtol 有三个参数:
-
指向字符串开头(或要开始查找的位置)的字符指针
指向字符指针的指针 ,该指针将更新为指向数字末尾后的第一个字符
表示数字的基数,在您的情况下很可能为 10
你的数据类型可能是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