我不明白为什么我的编译器(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)