- 相關推薦
C語言中sscanf的用法
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。下面是小編為大家整理的C語言中sscanf的用法,歡迎參考~
名稱:
sscanf() - 從一個字符串中讀進與指定格式相符的數(shù)據.
復制代碼 代碼如下:
函數(shù)原型:
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) 加了星號 (*) 表示跳過此數(shù)據不讀入. (也就是不把此數(shù)據讀入參數(shù)中)
2、{a|b|c}表示a,b,c中選一,[d],表示可以有d也可以沒有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 表示滿足該條件的被過濾掉,不會向目標參數(shù)中寫入值
支持集合操作:
%[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("1.string=%sn", string);
printf("1.ret=%d, buf1=%s, buf2=%s, digit=%dnn", ret, buf1, buf2, digit);
/*
**執(zhí)行結果:
**1.ret=3, buf1=china, buf2=beijing, digit=123
**可以看出,sscanf的返回值是讀取的參數(shù)個數(shù)
*/
/*2.取指定長度的字符串*/
string = "123456789";
sscanf(string, "%5s", buf1);
printf("2.string=%sn", string);
printf("2.buf1=%snn", buf1);
/*
**執(zhí)行結果:
**2.buf1=12345
*/
/*3.取到指定字符為止的字符串*/
string = "123/456";
sscanf(string, "%[^/]", buf1);
printf("3.string=%sn", string);
printf("3.buf1=%snn", buf1);
/*
**執(zhí)行結果:
**3.buf1=123
*/
/*4.取到指定字符集為止的字符串*/
string = "123abcABC";
sscanf(string, "%[^A-Z]", buf1);
printf("4.string=%sn", string);
printf("4.buf1=%snn", buf1);
/*
**執(zhí)行結果:
**4.buf1=123abc
*/
/*5.取僅包含指定字符集的字符串*/
string = "0123abcABC";
sscanf(string, "%[0-9]%[a-z]%[A-Z]", buf1, buf2, buf3);
printf("5.string=%sn", string);
printf("5.buf1=%s, buf2=%s, buf3=%snn", buf1, buf2, buf3);
/*
**執(zhí)行結果:
**5.buf1=123, buf2=abc, buf3=ABC
*/
/*6.獲取指定字符中間的字符串*/
string = "ioswp7";
sscanf(string, "%*[^<]
【C語言中sscanf的用法】相關文章:
C語言中sscanf的用法有哪些09-25
C語言中如何使用sscanf08-27
C語言中assert的用法06-02
C語言中sizeof的用法09-09
c語言中bit的用法11-01
c語言中%s的用法07-01
c語言中time函數(shù)的用法08-27
c語言中char的用法簡介09-29
c語言中map的基本用法10-28