C语言sscanf()函数(从字符串读取格式化输入,提取需要的信息)
生活随笔
收集整理的這篇文章主要介紹了
C语言sscanf()函数(从字符串读取格式化输入,提取需要的信息)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
需包含頭文件:C 標準庫 - <stdio.h>
文章目錄
- 描述
- 聲明
- 參數
- 返回值
- 實例
- 我在VS上測試(VS上要用sscanf_s)
- 示例1
- 示例2(提取時能默認以空格分割)
描述
C 庫函數 int sscanf(const char *str, const char *format, ...) 從字符串讀取格式化輸入。
聲明
下面是 sscanf() 函數的聲明。
int sscanf(const char *str, const char *format, ...)參數
- str – 這是 C 字符串,是函數檢索數據的源。
- format – 這是 C 字符串,包含了以下各項中的一個或多個:空格字符、非空格字符 和 format 說明符。
- format 說明符形式為 [=%[*][width][modifiers]type=],具體講解如下:
sscanf 類型說明符:
- 附加參數 – 這個函數接受一系列的指針作為附加參數,每一個指針都指向一個對象,對象類型由 format 字符串中相應的 % 標簽指定,參數與 % 標簽的順序相同。
- 針對檢索數據的 format 字符串中的每個 format 說明符,應指定一個附加參數。如果您想要把 sscanf 操作的結果存儲在一個普通的變量中,您應該在標識符前放置引用運算符(&),例如:
返回值
如果成功,該函數返回成功匹配和賦值的個數。如果到達文件末尾或發生讀錯誤,則返回 EOF。
實例
下面的實例演示了 sscanf() 函數的用法。
#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); }讓我們編譯并運行上面的程序,這將產生以下結果:
March 25, 1989 = Saturday我在VS上測試(VS上要用sscanf_s)
sscanf_s 取值的時候,需要在每個取值后面指定取值的最大大小。
(而且根據VS提示,貌似還需要是 unsigned int 類型)
示例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); }運行結果:
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); }運行調試結果:
參考文章1:C 庫函數 - sscanf()
參考文章2:sscanf,sscanf_s及其相關用法
總結
以上是生活随笔為你收集整理的C语言sscanf()函数(从字符串读取格式化输入,提取需要的信息)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言strstr()函数(在主字符串里
- 下一篇: 计算机里的dump是什么意思?(转储、转