sscanf() - 從乙個字串中讀進與指定格式相符的資料.
函式原型:
int sscanf( string str, string fmt, mixed var1, mixed var2 ... );
int scanf( const char *format [,argument]... );
說明:sscanf與scanf類似,都是用於輸入的,只是後者以螢幕(stdin)為輸入源,前者以固定字串為輸入源。
其中的format可以是乙個或多個 ]type | ' ' | '\t' | '\n' | 非%符號}
注:1、 * 亦可用於格式中, (即 %*d 和 %*s) 加了星號 (*) 表示跳過此資料不讀入. (也就是不把此資料讀入引數中)
2、表示a,b,c中選一,[d],表示可以有d也可以沒有d。
3、width表示讀取寬度。
4、:引數的size,通常h表示單位元組size,i表示2位元組 size,l表示4位元組size(double例外),l64表示8位元組size。
5、type :這就很多了,就是%s,%d之類。
6、特別的:%*[width] type 表示滿足該條件的被過濾掉,不會向目標引數中寫入值
支援集合操作:
%[a-z] 表示匹配a到z中任意字元,貪婪性(盡可能多的匹配)
%[ab'] 匹配a、b、'中一員,貪婪性
%[^a] 匹配非a的任意字元,貪婪性
format格式
]type | ' ' | t' | '\n' | 非%符號}
注: *可用於格式中,(即%*d和%*s)加了星號(*)表示跳過此資料不讀入。(也就是不把資料讀入到引數中)
width表示讀取寬度
:引數size,通常h表示單位元組size,l表示2位元組size,l表示4位元組size,l64表示8位元組size
type引數型別,例如%s,%d
支援正規表示式,例如%[a-z]匹配a到z中任意字元(ps:正規表示式這個假期我會寫一篇部落格記錄)
參考用例
#include
#include
#include
int main()
九度ac題目
題目描述
題目描述:
有乙個網路日誌,記錄了網路中計算任務的執**況,每個計算任務對應一條如下形式的日誌記錄:
「hs_10000_p」是計算任務的名稱,
「2007-01-17 19:22:53,315」是計算任務開始執行的時間「年-月-日 時:分:秒,毫秒」,
「253.035(s)」是計算任務消耗的時間(以秒計)
hs_10000_p 2007-01-17 19:22:53,315 253.035(s)
請你寫乙個程式,對日誌中記錄計算任務進行排序。
時間消耗少的計算任務排在前面,時間消耗多的計算任務排在後面。
如果兩個計算任務消耗的時間相同,則將開始執行時間早的計算任務排在前面。
輸入:
日誌中每個記錄是乙個字串,每個字串佔一行。最後一行為空行,表示日誌結束。日誌中最多可能有10000條記錄。
計算任務名稱的長度不超過10,開始執行時間的格式是yyyy-mm-dd hh:mm:ss,mmm,消耗時間小數點後有三位數字。
計算任務名稱與任務開始時間、消耗時間之間以乙個或多個空格隔開,行首和行尾可能有多餘的程式設計客棧空格。
輸出:
排序好的日誌記錄。每個記錄的字串各佔一行。
輸入的格式與輸入保持一致,輸入包括幾個空格,你的輸出中也應該包含同樣多的空格。
樣例輸入:
hs_10000_p 2007-01-17 19:22:53,315 253.035(s)
hs_10001_p 2007-01-17 19:22:53,315 253.846(s)
hs_10002_m 2007-01-17 19:22:53,315 129.574(s)
hs_10002_p 2007-01-17 19:22:53,315 262.531(s)
hs_10003_m 2007-01-17 19:22:53,318 126.622(s)
hs_10003_p 2007-01-17 19:22:53,318 136.962(s)
hs_10005_m 2007-01-17 19:22:53,318 130.487(s)
hs_10005_p 2007-01-17 19:22:53,318 253.035(s)
hs_10006_m 2007-01-17 19:22:53,318 248.548(s)
hs_10006_p 2007-01-17 19:25:23,367 3146.827(s)
樣例輸出:
hs_10003_m 2007-01-17 19:22:53,318 126.622(s)
hs_10002_m 2007-01-17 19:22:53,315 129.574(s)
hs_10005_m 2007-01-17 19:22:53,318 130.487(s)
hs_10003_p 2007-01-17 19:22:53,318 136.962(s)
hs_10006_m 2007-01-17 19:22:53,318 248.548(s)
hs_10000_p 2007-01-17 19:22:53,315 253.035(s)
hs_10005_p 2007-01-17 19:22:53,318 253.035(s)
hs_10001_p 2007-01-17 19:22:53,315 253.846(s)
程式設計客棧 hs_10002_p 2007-01-17 19:22:53,315 262.531(s)
hs_10006_p 2007-01-17 19:25:23,367 3146.827(s)
ac**
#include
#include
#include
struct mission
;
int compare(const void *p, const void *q);
int main()
sscanf(mis[n].str, "%s%d-%d-%d %d:%d:%d,%d %lf", mis[n].name, &mis[n].year, &mis[n].month, &mis[n].day, &mis[n].hour, &mis[n].minute, &mis[n].second, &mis[n].micro, &mis[n].runtime);
n ++;
} qsort(mis, n, sizeof(mis[0]), compare);
for(i = 0; i < n; i ++)
return 0;
}
int compare(const void *p, const void *q)
else if(a->runtime == b->runtime && a->year > b->year)
else if(a->runtime == b->runtime && a->year == b->year && a->month > b->month)
else if(a->runtime == b->runtime && a->year == b->year && a->month == b->month && a->day > b->day)
else if(a->runtime == b->runtime && a->year == b->year && a->month == b->month && a->day == b->day && a->hour > b->hour)
else if(a->runtime == b->runtime && a->year == b->year && a->month == b->month && a->day == b->day && a->hour == b->hour && a->minute > b->minute)
else if(a->runtime == b->runtime && a->year == b->year && a->month == b->month && a->day == b->day && a->hour == b->hour && a->minute == b->minute && a->second > b->second)
else if(a->runtime == b->runtime && a->year == b->year && a->month == b->month && a->day == b->day && a->hour == b->hour && a->minute == b->minute && a->second == b->second && a->micro > b->micro)
else if(a->runtime == b->runtime && a->year == b->year && a->month == b->month && a->day == b->day && a->hour == b->hour && a->minute == b->minute && a->second > b->second && a->micro == b->micro)
else
} 本文標題: c語言中的sscanf()函式使用詳解
本文位址: /ruanjian/c/129774.html
C語言中sscanf 用法
int sscanf const char const char int sscanf const char buffer,const char format,argument buffer儲存的資料 format格式控制字串 argument選擇性設定字串 sscanf會從buffer裡讀進資料,...
C語言中 sscanf 的用法
sscanf 從乙個字串中讀入,指定格式的資料,並存入對應的引數列表中.返回值 失敗 1 成功 格式化引數的數目.str 待讀入的字串,特定的字串 fmt 格式化方式 var1 var2 引數列表 intsscanf string str,string fmt,mixed var1,mixed va...
C語言中sscanf函式的簡明教程
int sscanf const char str,const char format,sscanf 定義於標頭檔案stdio.h。sscanf 會將引數str的字串根據引數format字串來轉換並格式化資料。格式轉換形式請參考scanf 轉換後的結果存於對應的引數內。成功則返回引數數目,失敗則返回...