最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c/c++ 利用sscanf進(jìn)行數(shù)據(jù)拆分操作

 更新時間:2020年12月10日 09:48:41   作者:冬暖海洋  
這篇文章主要介紹了c/c++ 利用sscanf進(jìn)行數(shù)據(jù)拆分操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

sscanf使用示例

示例:使用sscanf分割文件中的數(shù)據(jù),數(shù)據(jù)源示例如下

川EZ1E58,貴GQ7708,:1302

貴AE0996,:185

貴A0PJ06,貴JYN192,貴JYN192,:128

分割代碼如下所示:

#include <stdio.h>
#include <string.h>
int DealLine(char *StrLine)
{
 // find : data save
 char Parkid[20] = "";
 char *p = StrLine;
 char *prt = StrLine;
 char carNum[20] = "";
 if(p = strstr(p,":"))
 {
 p = p + 1;
 strncpy(Parkid,p,20);
 printf("Parkid == %s",Parkid);
 }else{
 return -1;
 }
 char endflag = 0;
 while(1){
 endflag = *prt; 
 if(endflag == 58)
 {
  return 0;
 }
 memset(carNum ,0, 20);
 sscanf(prt,"%[^,]",carNum);
 prt = strstr(prt,",");
 prt = prt + 1;
 printf("carNum = %s \n",carNum); 
 }
}
 
int main(void)
{
 FILE *fp; 
 
 char StrLine[1024] = "";
 fp = fopen("./test1.txt","r"); //判斷文件是否存在及可讀
 if(fp == NULL)
 {
 printf("open fail");
 return -1;
 }
 while(!feof(fp)){
 fgets(StrLine,1024,fp); //讀取一行
 printf("\n\n\n");
 printf("%s\n",StrLine);
 int ret = DealLine(StrLine);
 }
 fclose(fp);
 return 0;
}

補(bǔ)充知識:sscanf從字符串中按照指定格式提取數(shù)據(jù)

我們在學(xué)習(xí)C語言的時候,一定都使用過scanf函數(shù),它表示從標(biāo)準(zhǔn)輸入中按照指定格式接收數(shù)據(jù)到變量。實(shí)際編程中,我們常常希望能從字符串中,提取想要的數(shù)據(jù)時,此時我們就可以派上sscanf函數(shù)了.

sscanf

sscanf 函數(shù)聲明如下:

int sscanf( const char* str, const char* format, ... );

它表示從字符串str中按照format格式提取數(shù)據(jù)到指定變量中。

sprintf

常常和sscanf配合使用的是sprintf函數(shù),其函數(shù)聲明如下:

int sprintf(char *buffer, const char *format, ...);

它表示提取變量中的數(shù)據(jù)按照指定格式組裝成一個字符串。

用例

//提取姓名和年齡
char sentence[] = "Rudolph is 12 years old";
char name[20]  = {};
int age = 0;
sscanf(sentence, "%s is %d", name, &age);
printf("name : %s age: %d\n", name, age);
//將字符串進(jìn)行每兩位進(jìn)行分割,最后一位分割為是一位數(shù).
const char*   pszClassID   = "1234070809001";
unsigned char  ucFillMsg[128] = {};
char      szSrcMsg[128]  = {};
sscanf(pszClassID, "%2d%2d%2d%2d%2d%2d%1d", 
  &ucFillMsg[0],
  &ucFillMsg[1],
  &ucFillMsg[2],
  &ucFillMsg[3],
  &ucFillMsg[4],
  &ucFillMsg[5],
  &ucFillMsg[6]);
//還原為字符串,不足兩位左邊補(bǔ)0
sprintf(szSrcMsg, "%02d%02d%02d%02d%02d%02d%01d",
  ucFillMsg[0], 
  ucFillMsg[1],
  ucFillMsg[2],
  ucFillMsg[3], 
  ucFillMsg[4], 
  ucFillMsg[5], 
  ucFillMsg[6]);
printf("src string : %s\n", szSrcMsg);
if (strcmp(pszClassID, szSrcMsg) == 0)
{
  printf("ok\n");
}
//提取每個IP值
const char*   pszIP    = "192.168.45.11";
unsigned char  ucIPAddr[4] = {};
sscanf(pszIP, "%d.%d.%d.%d", &ucIPAddr[0],
  &ucIPAddr[1],
  &ucIPAddr[2],
  &ucIPAddr[3]);
for (size_t i = 0; i < 4; i++)
{
  printf("ip element[%d] : %d\n", i, ucIPAddr[i]);
}

執(zhí)行結(jié)果:

name : Rudolph age: 12
src string : 1234070809001
ok
ip element[0] : 192
ip element[1] : 168
ip element[2] : 45
ip element[3] : 11

以上這篇c/c++ 利用sscanf進(jìn)行數(shù)據(jù)拆分操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用MySQL編程實(shí)現(xiàn)C語言功能強(qiáng)大化步驟示例

    使用MySQL編程實(shí)現(xiàn)C語言功能強(qiáng)大化步驟示例

    這篇文章主要為大家介紹了使用MySQL編程實(shí)現(xiàn)C語言功能強(qiáng)大化步驟示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • C語言每日練習(xí)之統(tǒng)計文本單詞數(shù)及高頻詞

    C語言每日練習(xí)之統(tǒng)計文本單詞數(shù)及高頻詞

    本文文大家準(zhǔn)備了個C語言練習(xí)題:統(tǒng)計單詞數(shù)并找出頻率最高的單詞,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C語言有一定幫助,感興趣的可以了解一下
    2022-05-05
  • C++中對C語言結(jié)構(gòu)體用法的擴(kuò)充

    C++中對C語言結(jié)構(gòu)體用法的擴(kuò)充

    今天小編就為大家分享一篇關(guān)于C++中對C語言結(jié)構(gòu)體用法的擴(kuò)充,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Qt采用線程以隊列方式實(shí)現(xiàn)下發(fā)數(shù)據(jù)

    Qt采用線程以隊列方式實(shí)現(xiàn)下發(fā)數(shù)據(jù)

    在C++中隊列是一種常用的數(shù)據(jù)結(jié)構(gòu)之一,一種特殊的線性表,一般采用先進(jìn)先出的方式。本文主要為大家介紹了Qt如何以隊列方式實(shí)現(xiàn)下發(fā)數(shù)據(jù),感興趣的可以了解一下
    2022-10-10
  • 深入理解goto語句的替代實(shí)現(xiàn)方式分析

    深入理解goto語句的替代實(shí)現(xiàn)方式分析

    本篇文章是對goto語句的替代實(shí)現(xiàn)方式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言中volatile關(guān)鍵字的作用及說明

    C語言中volatile關(guān)鍵字的作用及說明

    文中主要介紹了C語言中volatile關(guān)鍵字的含義和使用場景,volatile是一個類型修飾符,主要用來修飾被不同線程訪問和修改的變量,它的作用是防止編譯器對代碼進(jìn)行優(yōu)化,確保每次直接讀取原始內(nèi)存地址的值
    2024-10-10
  • C++:構(gòu)造函數(shù),析構(gòu)函數(shù)詳解

    C++:構(gòu)造函數(shù),析構(gòu)函數(shù)詳解

    今天小編就為大家分享一篇關(guān)于C++構(gòu)造函數(shù)和析構(gòu)函數(shù)的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-09-09
  • 淺析C語言中assert的用法

    淺析C語言中assert的用法

    以下是對C語言中assert的使用方法進(jìn)行了介紹,需要的朋友可以參考下
    2013-07-07
  • Opencv LBPH人臉識別算法詳解

    Opencv LBPH人臉識別算法詳解

    這篇文章主要為大家詳細(xì)介紹了Opencv LBPH人臉識別算法的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C語言實(shí)現(xiàn)簡易掃雷游戲

    C語言實(shí)現(xiàn)簡易掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡易掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論

大连市| 扶绥县| 晴隆县| 玛沁县| 宽城| 平度市| 哈密市| 建平县| 舒城县| 汤阴县| 廉江市| 娄底市| 宜州市| 滕州市| 河西区| 甘谷县| 府谷县| 丰原市| 区。| 阆中市| 平南县| 桓台县| 浏阳市| 上蔡县| 海伦市| 丹阳市| 聂拉木县| 岳阳县| 鄂托克旗| 兴文县| 江门市| 寿宁县| 光泽县| 丹棱县| 阳谷县| 红河县| 宜兰市| 岢岚县| 西乌珠穆沁旗| 潼南县| 新津县|