国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C語言根據協議分割獲取字符串單元的實現代碼

2020-05-23 13:24:40
字體:
來源:轉載
供稿:網友

協議做如下規定:

規定數據協議:

序列號    長度   狀態字   數據長度  數據1  數據2   數據3

以空格作為數據單元。                        

ep:  

00001 00007 1 3  34567 26358 32698   (1)  (2) (3)(4) (5)  (6)  (7)

如ep所示:

(1)00001就是數字1,即代表序列號為1(2)00007就是數字7,即代表長度為7(3)1代表狀態字(4)3代表數字長度(5)34567代表數據1(6)26358代表數據2(7)32698代表數據3

這樣就找到規律了,假設數據都為整型或者負整型,我們就可以來實現以下代碼:

#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("狀態字:%d/n",status); printf("數據長度:%d/n",data_length); printf("數據1:%d/n",data1); printf("數據2:%d/n",data2); printf("數據3:%d/n",data3); return 0; } 

運行結果:

C語言,協議,分割,字符串單元,代碼

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灌云县| 勃利县| 静安区| 蒙城县| 合山市| 城固县| 贵州省| 新竹市| 邻水| 石柱| 乐平市| 巨野县| 新安县| 苏尼特左旗| 利津县| 赤城县| 盘山县| 五原县| 葵青区| 盐源县| 临沧市| 老河口市| 通山县| 阿尔山市| 嘉黎县| 罗平县| 青河县| 饶河县| 宁陵县| 鄱阳县| 江源县| 翁牛特旗| 工布江达县| 新沂市| 临朐县| 罗山县| 衡山县| 广南县| 长武县| 宁明县| 淅川县|