真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C語(yǔ)言庫(kù)函數(shù)篇1:sscanf用法

一、前言

為赤壁等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及赤壁網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、赤壁網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

本節(jié),我們將學(xué)習(xí)C語(yǔ)言庫(kù)函數(shù)sscanf()的使用,使用sscanf可以快速的從復(fù)雜字符串中獲取自己需要的數(shù)據(jù)。

二、基礎(chǔ)知識(shí)

1.簡(jiǎn)介

sscanf與scanf類似,都是用于輸入的,只是后者以鍵盤(pán)(stdin)為輸入源,前者以固定字符串為輸入源。

2.函數(shù)描述

int sscanf(const char buffer, const char format, [argument]...);
參數(shù):
buffer:需要解析的源字符串
format:窗體控件字符串,定義解析字符串的規(guī)則,可以是一個(gè)或多個(gè)
{%[*] [width] [{h | I | I64 | L}]type | ' ' | '\t' | '\n' | 非%符號(hào)}
argument:可選變量,用來(lái)存儲(chǔ)按照f(shuō)ormat規(guī)則解析buffer的結(jié)果

注:
(1) 亦可用于格式中, (即 %d 和 %s) 加了星號(hào) () 表示跳過(guò)此數(shù)據(jù)。 (也就是不把此數(shù)據(jù)讀入?yún)?shù)中)
(2) {a|b|c}表示a,b,c中選一,[d],表示可以有d也可以沒(méi)有d。
(3) width表示讀取寬度。
(4) {h | l | I64 | L}:參數(shù)的size,通常h表示單字節(jié)size,I表示2字節(jié) size,L表示 4字節(jié)size(double例外),l64表示8字節(jié)size。
(5) type :這就很多了,就是%s,%d之類。
(6) 特別的:%*[width] [{h | l | I64 | L}]type 表示滿足該條件的被過(guò)濾掉, 不會(huì)向目標(biāo)參數(shù)中寫(xiě)入值,失敗返回0 ,否則返回格式化的參數(shù)個(gè)數(shù)
(7) 如果讀取的字符串,不是以空格來(lái)分隔的話,就可以使用%[]。

使用時(shí)候需要包含頭文件:#include

三、基礎(chǔ)知識(shí)

1.簡(jiǎn)單用法

#include 

 char *str = "123456 hello world";

int main(void)
{
  int num = 0;
  char str1[64] = { 0x00 };
  char str2[64] = { 0x00 };

  sscanf(str, "%d %s %", &num, str1, str2);
  printf("num : %d\r\nstr1 : %s\r\nstr2 : %s\r\n", num, str1, str2);

  return 0;
}

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

C語(yǔ)言庫(kù)函數(shù)篇1:sscanf用法

2.取指定長(zhǎng)度字符串

#include 
char *str  = "123456";
int main(void)
{
  char res[64] = { 0x00 };
  sscanf(str, "%4s", res);
  printf("res is: %s\r\n", res);

  return 0;
}

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

C語(yǔ)言庫(kù)函數(shù)篇1:sscanf用法

3. * 格式使用

(*)表示跳過(guò)此數(shù)據(jù)不讀入,也就是不把數(shù)據(jù)讀入?yún)?shù)中

#include 

int main(void)
{
  char *str  = "123456hello world";
  char res[64] = { 0x00 };
  char res1[64] = { 0x00 };

  sscanf(str, "%*d%s %s", res, res1);
  printf("res is: %s\r\nres1 is: %s\r\n", res, res1);
  return 0;
}

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

C語(yǔ)言庫(kù)函數(shù)篇1:sscanf用法

4. %[]格式使用

(1) 獲取遇到指定字符為止的字符串

#include 
int main(void)
{
  char *str  = "hello+world";
  char res[64] = { 0x00 };
  char res1[64] = { 0x00 };

  sscanf(str, "%[^+]+%s", res, res1);
  printf("res is: %s\r\nres1 is: %s\r\n", res, res1);
  return 0;
}

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

C語(yǔ)言庫(kù)函數(shù)篇1:sscanf用法

(2) 獲取遇到空格為止的字符串

#include 
int main(void)
{
  char *str  = "hello world";
  char res[64] = { 0x00 };
  char res1[64] = { 0x00 };

  sscanf(str, "%[^ ] %s", res, res1);
  printf("res is: %s\r\nres1 is: %s\r\n", res, res1);
  return 0;
}

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

C語(yǔ)言庫(kù)函數(shù)篇1:sscanf用法

5.取指定字符集的字符串

#include 
int main(void)
{
  char *str  = "hello123456HELLO";
  char res[64] = { 0x00 };

  sscanf(str, "%[a-z1-9]", res);
  printf("res is: %s\r\n", res);
  return 0;
}

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

C語(yǔ)言庫(kù)函數(shù)篇1:sscanf用法

四、結(jié)語(yǔ)

本節(jié)完,實(shí)際操作過(guò)程中需要注意的地方有如下幾點(diǎn):

(1) %[^]只取到指定字符串,如繼續(xù)獲取之后字符串需要做處理,如上述第4小例。

C語(yǔ)言庫(kù)函數(shù)篇1:sscanf用法

此次執(zhí)行不能正常獲取到"world"而獲取了“+world",就是由于%[^]不取該字符,使用時(shí)候需要特別注意。

2.后記:

如您在使用過(guò)程中有任何問(wèn)題,請(qǐng)加QQ群進(jìn)一步交流,也可以github提Issue。

QQ交流群:906015840 (備注:物聯(lián)網(wǎng)項(xiàng)目交流)

github倉(cāng)庫(kù)地址:https://github.com/solitary-sand/c

一葉孤沙出品:一沙一世界,一葉一菩提

C語(yǔ)言庫(kù)函數(shù)篇1:sscanf用法


文章名稱:C語(yǔ)言庫(kù)函數(shù)篇1:sscanf用法
文章來(lái)源:http://weahome.cn/article/pseech.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部