小编GMo*_*ney的帖子

为什么索引1处的数组在我的编译器中重置?(未定义的行为)

我不明白为什么我的编译器(Microchip XC16)会向其他编译器提供不同的结果.

下面是我转换为在通用机器上运行的示例代码,而不仅仅是我正在使用的pic33fj256gp710.当在pic上运行代码时(代码示例2),我得到一个不同的结果,其中第一个数组索引被重置为0(结果2).

本质上,我们的想法是通过串行端口获取字符串命令,并通过拆分字符串并对其进行排序来配置设备.

这是因为编译器最初传递一个指向该值的指针,直到清除该字符串而不是传递该值本身?如果是这种情况,我如何强制编译器传递值本身?

代码示例1:

char receive_data_2[100] = "XXXX,1,4,20,33,34";

int m = 4;
char intext[10];
int output_values[10];

int number_of_logger_selections = 0;
while(receive_data_2[m] != ' ' && number_of_logger_selections < 10)
{
    int a = 0;
    m++;
    strcpy(intext, "          ");
    do
    { // get parameter number
        intext[a++] = receive_data_2[m++];
    } while(receive_data_2[m] != ',' && receive_data_2[m] != ' ');

    output_values[number_of_logger_selections] = atoi(intext); // save output number to mark 'x'

    printf
        ("\nvalue at output_values[%d] = %d, intext = %s, translated to %d\r\n\n",
         number_of_logger_selections, …
Run Code Online (Sandbox Code Playgroud)

c embedded microchip

3
推荐指数
1
解决办法
95
查看次数

标签 统计

c ×1

embedded ×1

microchip ×1