之前根据CSDN上一位老哥的code进行运行,结果跑不通,苦思冥想半天,还打算自己写,结果愣是没整出来,后来将partition函数的数组改成用指针表示,结果就OK啦,特此记录!!!
partition函数如下:
int partition(char *src, char *par, int pos)
{
int i, j;
i = pos;
//取到第一个非空格字符
while (*(src + i) == ' ')
{
i++;
}
if (*(src + i) != '\0')
{
j = 0;
while ((*(src + i) != '\0') && (*(src + i) != ' '))
{
*(par + j) = *(src + i);
++i;
++j;
}
*(par + j) = '\0';
return i;
}
else
{
return -1;
}
};
main函数如下:
int main()
{
float serial_number;
int lenght;
int status;
int data_length;
int data1, data2, data3;
int position = 0;
int para_flag = 1;
int parameter_item = 0;
char partition_string[20] = { 0 };
char* data = "12301 00007 1 3 34567 26358 32698";
while (para_flag)
{
//position++;
if (para_flag == 0)
break;
if ((position = partition(data, partition_string, position)) != -1)
{
printf("position:%d\n", position);
++parameter_item; //case value
switch (parameter_item)
{
case 1:
serial_number = atof(partition_string);
break;
case 2:
lenght = atoi(partition_string);
break;
case 3:
status = atoi(partition_string);
break;
case 4:
data_length = atoi(partition_string);
break;
case 5:
data1 = atoi(partition_string);
break;
case 6:
data2 = atoi(partition_string);
break;
case 7:
data3 = atoi(partition_string);
para_flag = 0;
break;
}
}
}
printf("序号:%f\n", serial_number);
printf("长度:%d\n", lenght);
printf("状态字:%d\n", status);
printf("数据长度:%d\n", data_length);
printf("数据1:%d\n", data1);
printf("数据2:%d\n", data2);
printf("数据3:%d\n", data3);
//char* sa = "Allan";
//cout << sa << endl;
sa保存的是第一个字符的地址,对sa进行解引用得到第一个字符;
//cout << *sa << endl;
//cout << *(sa+1) << endl;
return 0;
}