sscanf函數(shù)用于從字符串中讀取格式化輸入。它的原型如下:
int sscanf(const char *str, const char *format, …);
其中,str是要讀取的字符串,format是指定輸入格式的字符串,…是可變參數(shù),表示要讀取的數(shù)據(jù)的地址。
sscanf函數(shù)根據(jù)format參數(shù)的格式,解析str字符串中的內(nèi)容,并將解析出的數(shù)據(jù)根據(jù)format中的指定方式存儲(chǔ)到相應(yīng)的地址中。它的工作方式與scanf函數(shù)類似,但是sscanf函數(shù)從字符串中讀取輸入,而scanf函數(shù)從標(biāo)準(zhǔn)輸入流中讀取輸入。
例如,下面的示例演示了如何使用sscanf函數(shù)從字符串中讀取整數(shù)和浮點(diǎn)數(shù):
#include <stdio.h>
int main() {
char str[] = "42 3.14";
int num;
float f;
sscanf(str, "%d %f", &num, &f);
printf("num = %d\n", num);
printf("f = %f\n", f);
return 0;
}
輸出結(jié)果為:
num = 42
f = 3.140000
在上面的例子中,sscanf函數(shù)從字符串str中按照"%d %f"的格式解析數(shù)據(jù),并將整數(shù)存儲(chǔ)到num變量中,將浮點(diǎn)數(shù)存儲(chǔ)到f變量中。
需要注意的是,sscanf函數(shù)返回成功匹配和賦值的參數(shù)個(gè)數(shù),如果返回值小于format字符串中的格式指示符個(gè)數(shù),表示解析失敗。另外,如果解析的數(shù)據(jù)類型和format中的格式指示符不匹配,可能會(huì)導(dǎo)致解析失敗或者得到錯(cuò)誤的結(jié)果。因此,在使用sscanf函數(shù)時(shí),需要確保格式指示符和要讀取的數(shù)據(jù)類型匹配。