日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言sscanf()函数(从字符串读取格式化输入,提取需要的信息)

發(fā)布時間:2025/3/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言sscanf()函数(从字符串读取格式化输入,提取需要的信息) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

需包含頭文件:C 標準庫 - <stdio.h>

文章目錄

    • 描述
    • 聲明
    • 參數(shù)
    • 返回值
    • 實例
    • 我在VS上測試(VS上要用sscanf_s)
      • 示例1
      • 示例2(提取時能默認以空格分割)

描述

C 庫函數(shù) int sscanf(const char *str, const char *format, ...) 從字符串讀取格式化輸入。

聲明

下面是 sscanf() 函數(shù)的聲明。

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

參數(shù)

  • str – 這是 C 字符串,是函數(shù)檢索數(shù)據(jù)的源。
  • format – 這是 C 字符串,包含了以下各項中的一個或多個:空格字符、非空格字符 和 format 說明符。
  • format 說明符形式為 [=%[*][width][modifiers]type=],具體講解如下:

    sscanf 類型說明符:

  • 附加參數(shù) – 這個函數(shù)接受一系列的指針作為附加參數(shù),每一個指針都指向一個對象,對象類型由 format 字符串中相應(yīng)的 % 標簽指定,參數(shù)與 % 標簽的順序相同。
  • 針對檢索數(shù)據(jù)的 format 字符串中的每個 format 說明符,應(yīng)指定一個附加參數(shù)。如果您想要把 sscanf 操作的結(jié)果存儲在一個普通的變量中,您應(yīng)該在標識符前放置引用運算符(&),例如:
int n; sscanf (str,"%d",&amp;n);

返回值

如果成功,該函數(shù)返回成功匹配和賦值的個數(shù)。如果到達文件末尾或發(fā)生讀錯誤,則返回 EOF。

實例

下面的實例演示了 sscanf() 函數(shù)的用法。

#include <stdio.h> #include <stdlib.h> #include <string.h>int main() {int day, year;char weekday[20], month[20], dtm[100];strcpy( dtm, "Saturday March 25 1989" );sscanf( dtm, "%s %s %d %d", weekday, month, &day, &year );printf("%s %d, %d = %s\n", month, day, year, weekday );return(0); }

讓我們編譯并運行上面的程序,這將產(chǎn)生以下結(jié)果:

March 25, 1989 = Saturday

我在VS上測試(VS上要用sscanf_s)

sscanf_s 取值的時候,需要在每個取值后面指定取值的最大大小。
(而且根據(jù)VS提示,貌似還需要是 unsigned int 類型)

_CRT_STDIO_INLINE int __CRTDECL sscanf_s(_In_z_ char const* const _Buffer,_In_z_ _Scanf_s_format_string_ char const* const _Format,...) sscanf_s(inputString, "%s.%s.%s.%s", s1, s1.length, s2, s2.length, s3, s3.length, s4, s4.length);

示例1

#include <stdio.h> #include <stdlib.h> #include <string.h>int main() {int day, year;char weekday[20], month[20], dtm[100];strcpy_s(dtm, "Saturday March 25 1989");sscanf_s(dtm, "%s %s %d %d", weekday, (unsigned int)sizeof(weekday), month, (unsigned int)sizeof(month), &day, &year);printf("%s %d, %d = %s\n", month, day, year, weekday);return(0); }

運行結(jié)果:

March 25, 1989 = Saturday

示例2(提取時能默認以空格分割)

#include <stdio.h> #include <stdlib.h> #include <string.h>int main() {char line[1024] = "path=/live/main_stream video_type=7 width=1920 height=1080 image_type=4 video_path=rkispp_scale0";const char* p;p = strstr(line, "path=");char path[64];if(NULL != p)sscanf_s(p, "path=%s", path, (unsigned int)sizeof(path));return(0); }

運行調(diào)試結(jié)果:

參考文章1:C 庫函數(shù) - sscanf()

參考文章2:sscanf,sscanf_s及其相關(guān)用法

總結(jié)

以上是生活随笔為你收集整理的C语言sscanf()函数(从字符串读取格式化输入,提取需要的信息)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。