在c语言或c++中利用sscanf怎么对数据进行拆分

  介绍

本篇文章给大家分享的是有关在c语言或c++中利用sscanf怎么对数据进行拆分,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强> sscanf使用示例

示例:使用sscanf分割文件中的数据,数据源示例如下

川EZ1E58,贵GQ7708,: 1302

贵AE0996,: 185

贵A0PJ06,贵JYN192,贵JYN192,: 128

分割代码如下所示:

 # include & lt; stdio.h>
  # include & lt; string.h>
  int DealLine (char * StrLine)
  {//找到:数据保存
  char Parkid [20]=?”;
  char * p=StrLine;
  char * prt=StrLine;
  char carNum [20]=?”;
  如果(p=strstr (p,“:“))
  {
  p=p + 1;
  strncpy (Parkid p 20);
  printf (“Parkid==% s", Parkid);
  其他}{
  返回1;
  }
  char endflag=0;
  而(1){
  endflag=* prt;
  如果(endflag==58)
  {
  返回0;
  }
  memset (carNum 0 20);
  sscanf (prt,“% [^]“, carNum);
  prt=strstr (prt、“、“);
  prt=prt + 1;
  printf (“carNum=% s \ n", carNum);
  }
  }
  
  int主要(空白)
  {
  文件*《外交政策》;
  
  char StrLine [1024]=?”;
  fp=fopen (“。/test1.txt",“r");//判断文件是否存在及可读
  如果(fp==NULL)
  {
  printf(“开放fail");
  返回1;
  }
  而(! feof (fp)) {
  fgets (StrLine, 1024,《外交政策》);//读取一行
  printf (“\ n \ n \ n");
  printf (“% s \ n" StrLine);
  int ret=DealLine (StrLine);
  }
  文件关闭(fp);
  返回0;
  }

<>强sscanf从字符串中按照指定格式提取数据

我们在学习C语言的时候,一定都使用过scanf函数,它表示从标准输入中按照指定格式接收数据到变量。实际编程中,我们常常希望能从字符串中,提取想要的数据时,此时我们就可以派上sscanf函数了。

<代码> sscanf

sscanf函数声明如下:

int sscanf (const char * str, const char *格式,…),

它表示从字符串str中按照格式格式提取数据到指定变量中。

<代码> sprintf

常常和sscanf配合使用的是sprintf函数,其函数声明如下:

int sprintf (char *缓冲区,const char *格式,…),

它表示提取变量中的数据按照指定格式组装成一个字符串。

用例

//提取姓名和年龄   句子char[]=奥车婪蚴?2年往往比;   字符的名字[20]={};   int年龄=0;   sscanf(句子,“% s % d",名字,和年龄);   printf(“名字:% s年龄:% d \ n",姓名、年龄);//将字符串进行每两位进行分割,最后一位分割为是一位数。   const char * pszClassID=?234070809001”;   无符号字符ucFillMsg [128]={};   char szSrcMsg [128]={};   sscanf (pszClassID,“% 2 d % 2 d % 2 d % 2 d % 2 d % 2 d % 1 d",   ,ucFillMsg [0],   ,ucFillMsg [1],   ,ucFillMsg [2],   ,ucFillMsg [3],   ,ucFillMsg [4],   ,ucFillMsg [5],   ,ucFillMsg [6]);//还原为字符串,不足两位左边补0   sprintf (szSrcMsg“% 2 d % 2 d % 2 d % 2 d % 2 d % 2 d % 01 d",   ucFillMsg [0],   ucFillMsg [1],   ucFillMsg [2],   ucFillMsg [3],   ucFillMsg [4],   ucFillMsg [5],   ucFillMsg [6]);   printf (“src字符串:% s \ n", szSrcMsg);   如果(strcmp (pszClassID szSrcMsg)==0)   {   printf(“好的\ n");   }//提取每个IP值   const char * pszIP=?92.168.45.11";   无符号字符ucIPAddr [4]={};   sscanf (pszIP,“% d % d % d % d",, ucIPAddr [0],   ,ucIPAddr [1],   ,ucIPAddr [2],   ,ucIPAddr [3]);   (size_t我=0;我& lt;4;我+ +)   {   printf (“ip元素[% d]: % d \ n",我,ucIPAddr[我]);   }

执行结果:

名称:鲁道夫年龄:12
  src字符串:1234070809001
  好吧
  ip元素[0]:192
  ip元素[1]:168
  ip元素[2]:45
  ip元素[3]:11 

以上就是在c语言或c++中利用sscanf怎么对数据进行拆分,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

在c语言或c++中利用sscanf怎么对数据进行拆分