C語言中sscanf的用法
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有彙編語言的特點。下面是小編為大家整理的C語言中sscanf的.用法,歡迎參考~
名稱:
sscanf() - 從一個字符串中讀進與指定格式相符的數據.
複製代碼 代碼如下:
函數原型:
Int sscanf( string str, string fmt, mixed var1, mixed var2 ... );
int scanf( const char *format [,argument]... );
説明:
sscanf與scanf類似,都是用於輸入的,只是後者以屏幕(stdin)為輸入源,前者以固定字符串為輸入源。
其中的format可以是一個或多個 {%[*] [width] [{h | l | I64 | L}]type | ' ' | '/t' | '/n' | 非%符號}
注:
1、 * 亦可用於格式中, (即 %*d 和 %*s) 加了星號 (*) 表示跳過此數據不讀入. (也就是不把此數據讀入參數中)
2、{a|b|c}表示a,b,c中選一,[d],表示可以有d也可以沒有d。
3、width表示讀取寬度。
4、{h | l | I64 | L}:參數的size,通常h表示單字節size,I表示2字節 size,L表示4字節size(double例外),l64表示8字節size。
5、type :這就很多了,就是%s,%d之類。
6、特別的:%*[width] [{h | l | I64 | L}]type 表示滿足該條件的被過濾掉,不會向目標參數中寫入值
支持集合操作:
%[a-z] 表示匹配a到z中任意字符,貪婪性(儘可能多的匹配)
%[aB'] 匹配a、B、'中一員,貪婪性
%[^a] 匹配非a的任意字符,貪婪性
下面是一段實例程序
複製代碼 代碼如下:
/*****************************************************
** Name : sscanf.c
** Author : gzshun
** Version : 1.0
** Date : 2011-12
** Description : sscanf function
******************************************************/
#include
#include
#include
static void sscanf_test(void);
static void sscanf_test(void)
{
int ret;
char *string;
int digit;
char buf1[255];
char buf2[255];
char buf3[255];
char buf4[255];
/*1.最簡單的用法*/
string = "china beijing 123";
ret = sscanf(string, "%s %s %d", buf1, buf2, &digit);
printf("ng=%sn", string);
printf("=%d, buf1=%s, buf2=%s, digit=%dnn", ret, buf1, buf2, digit);
/*
**執行結果:
**=3, buf1=china, buf2=beijing, digit=123
**可以看出,sscanf的返回值是讀取的參數個數
*/
/*2.取指定長度的字符串*/
string = "123456789";
sscanf(string, "%5s", buf1);
printf("ng=%sn", string);
printf("1=%snn", buf1);
/*
**執行結果:
**1=12345
*/
/*3.取到指定字符為止的字符串*/
string = "123/456";
sscanf(string, "%[^/]", buf1);
printf("ng=%sn", string);
printf("1=%snn", buf1);
/*
**執行結果:
**1=123
*/
/*4.取到指定字符集為止的字符串*/
string = "123abcABC";
sscanf(string, "%[^A-Z]", buf1);
printf("ng=%sn", string);
printf("1=%snn", buf1);
/*
**執行結果:
**1=123abc
*/
/*5.取僅包含指定字符集的字符串*/
string = "0123abcABC";
sscanf(string, "%[0-9]%[a-z]%[A-Z]", buf1, buf2, buf3);
printf("ng=%sn", string);
printf("1=%s, buf2=%s, buf3=%snn", buf1, buf2, buf3);
/*
**執行結果:
**1=123, buf2=abc, buf3=ABC
*/
/*6.獲取指定字符中間的字符串*/
string = "ioswp7";
sscanf(string, "%*[^<]
-
C語言中文件操作詳解及實例代碼
在文件操作中除了打開操作以及讀寫操作,還有幾種比較常見的操作。以下是本站小編搜索整理的關於這些操作中涉及到的函數,,需要的朋友可以參考本文!想了解更多相關信息請持續關注我們應屆畢業生考試網!一.移動位置指針的函數rewind函數和fseek函數,這兩個函數的原...
-
c語言—文件的創建與建立
今天要介紹的是有關文件的創建與讀取的語法,事實上,c語言中對於這方面的`已經有相當經典且應用相當廣泛的語法了,但是我今天想講一講關於c++中的相關語法,以下僅供參考!以下是代碼:首先是文件的創建:#include#include#includeusingnamespacestd;intmain(){ofstreamout...
-
C/C++面試常考關鍵字
導語:結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。下面就由小編為大家介紹一下C/C++面試常考關鍵字,歡迎大家閲讀!C/C++面試常考關鍵字總結:ic關鍵字的作用?1)、static申明的變量為靜態全局變量,該變量存儲在靜態數據區,...
-
C語言順序存儲結構
C語言是一個有結構化程序設計、具有變量作用域以及遞歸功能的過程式語言。下面是小編分享的C語言順序存儲結構,一起來看一下吧。1、什麼是順序存儲結構?用一段地址連續的'存儲單元依次存儲線性表的數據元素。2、線性表的順序存儲結構#include<stdio.h>#include<...