C語言根據協(xié)議分割獲取字符串單元的實現(xiàn)代碼
更新時間:2018年12月14日 14:33:03 作者:Engineer-Bruce_Yang
今天小編就為大家分享一篇關于C語言根據協(xié)議分割獲取字符串單元的實現(xiàn)代碼,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
協(xié)議做如下規(guī)定:
規(guī)定數(shù)據協(xié)議:
序列號 長度 狀態(tài)字 數(shù)據長度 數(shù)據1 數(shù)據2 數(shù)據3
以空格作為數(shù)據單元。
ep:
00001 00007 1 3 34567 26358 32698 (1) (2) (3)(4) (5) (6) (7)
如ep所示:
(1)00001就是數(shù)字1,即代表序列號為1 (2)00007就是數(shù)字7,即代表長度為7 (3)1代表狀態(tài)字 (4)3代表數(shù)字長度 (5)34567代表數(shù)據1 (6)26358代表數(shù)據2 (7)32698代表數(shù)據3
這樣就找到規(guī)律了,假設數(shù)據都為整型或者負整型,我們就可以來實現(xiàn)以下代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//根據空格拆分字符串
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] != ' '))
{
//判斷條件是否滿足
if((src[i] > '9') || (src[i] < '0') && (src[i] != '-'))
return -1 ;
par[j] = src[i];
++i;
++j;
}
par[j]='\0';
return i;
}
else
return -1;
}
int main(void)
{
int 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 = "00001 00007 1 3 34567 26358 32698";
while(para_flag)
{
if(para_flag == 0)
break ;
if((position = partition(data,partition_string,position)) != -1)
{
++parameter_item ;
switch(parameter_item)
{
case 1:
serial_number = atoi(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("序號:%d\n",serial_number);
printf("長度:%d\n",lenght);
printf("狀態(tài)字:%d\n",status);
printf("數(shù)據長度:%d\n",data_length);
printf("數(shù)據1:%d\n",data1);
printf("數(shù)據2:%d\n",data2);
printf("數(shù)據3:%d\n",data3);
return 0;
}
運行結果:

總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

