Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 分隔字符中的两个值并将其分配给变量_C_Arduino - Fatal编程技术网

C 分隔字符中的两个值并将其分配给变量

C 分隔字符中的两个值并将其分配给变量,c,arduino,C,Arduino,C和Arduino编程新手,我的问题是,如何将字符C拆分为两个独立的整数变量?char c的值看起来像140100,两个数字都是整数。我需要根据这个数据创建两个整数变量,SpeedX和SpeedY,这样SpeedX=140和SpeedY=100。谢谢你的帮助 如何将字符c拆分为两个独立的整数变量 首先,您拥有的是字符串,而不是字符。 可以使用strtok函数拆分字符串并指定要使用的分隔符,如下所示: #include <stdio.h> #include <stdlib.h&g

C和Arduino编程新手,我的问题是,如何将字符C拆分为两个独立的整数变量?char c的值看起来像140100,两个数字都是整数。我需要根据这个数据创建两个整数变量,SpeedX和SpeedY,这样SpeedX=140和SpeedY=100。谢谢你的帮助

如何将字符c拆分为两个独立的整数变量

首先,您拥有的是字符串,而不是字符。 可以使用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;
}
#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;
}
如何将字符c拆分为两个独立的整数变量

首先,您拥有的是字符串,而不是字符。 可以使用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;
}
#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;
}

您的数据类型可能是char*或char[50],因为char只能表示一个字符,而不是像140100这样的字符序列。 无论如何,请使用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

您的数据类型可能是char*或char[50],因为char只能表示一个字符,而不是像140100这样的字符序列。 无论如何,请使用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

您所说的字符很可能是字符串或字符数组,它实际上是指向多个字符的指针。一个字符只能存储1个字符

中定义的函数strtol具有三个参数:

指向字符串开头或要开始查找的位置的字符指针

指向字符指针的指针,该指针将被更新为指向数字结尾后的第一个字符

数字表示的基数,在您的情况下很可能是10


您所说的字符很可能是字符串或字符数组,它实际上是指向多个字符的指针。一个字符只能存储1个字符

中定义的函数strtol具有三个参数:

指向字符串开头或要开始查找的位置的字符指针

指向字符指针的指针,该指针将被更新为指向数字结尾后的第一个字符

数字表示的基数,在您的情况下很可能是10



你所拥有的不是字符,而是字符串数组。ARDUNO语言是C++ +M。ARDUINO既不是C也不是C++。你所拥有的不是字符,这是一个字符串数组的字符。ARDUNO语言是C++ + M。ARDUINO既不是C也不是C++。@一个下行投票:请你解释为什么上面的代码不回答这个问题或者有其他问题吗?否则就很难讨论或改进。不是反对者,而是很多时候,人们,对没有表现出任何努力的问题的答案投反对票。我不理解这里的DV。这基本上在几行代码中解决了OPs问题。@downvoting:你能解释一下为什么上面的代码没有回答这个问题或者有其他问题吗?否则就很难讨论或改进。不是反对者,而是很多时候,人们,对没有表现出任何努力的问题的答案投反对票。我不理解这里的DV。这基本上在几行代码中解决了OPs问题。@下一票:请您评论一下为什么上面的代码没有回答这个问题或有任何其他问题?上一票,因为这是一个有效的解决方案。可以讨论是否有更简单的解决方案;无论如何,它是有效的。@Marievi谢谢你的帮助,这些变量是否可以在while循环范围之外使用?因为动态内存分配,这并不是Arduino的最佳实践,我很想放弃投票。@Captain_Chris他们会的,只要您不在while循环中进行声明。@downvoting:您能解释一下为什么上面的代码没有回答这个问题或有任何其他问题吗?Upvoted,因为这是一个有效的解决方案。可以讨论是否有更简单的解决方案;无论如何,它是有效的。@Marievi谢谢你的帮助,这些变量在while循环的范围之外可以使用吗?我很想放弃投票,因为动态内存分配对Arduino来说并不是最好的做法。@Captain_Chris他们会的,只要你不在while循环中声明。