sscanf函數用于從字符串中讀取格式化輸入。它的原型如下:
int sscanf(const char *str, const char *format, …);
其中,str是要讀取的字符串,format是指定輸入格式的字符串,…是可變參數,表示要讀取的數據的地址。
sscanf函數根據format參數的格式,解析str字符串中的內容,并將解析出的數據根據format中的指定方式存儲到相應的地址中。它的工作方式與scanf函數類似,但是sscanf函數從字符串中讀取輸入,而scanf函數從標準輸入流中讀取輸入。
例如,下面的示例演示了如何使用sscanf函數從字符串中讀取整數和浮點數:
#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;
}
輸出結果為:
num = 42
f = 3.140000
在上面的例子中,sscanf函數從字符串str中按照"%d %f"的格式解析數據,并將整數存儲到num變量中,將浮點數存儲到f變量中。
需要注意的是,sscanf函數返回成功匹配和賦值的參數個數,如果返回值小于format字符串中的格式指示符個數,表示解析失敗。另外,如果解析的數據類型和format中的格式指示符不匹配,可能會導致解析失敗或者得到錯誤的結果。因此,在使用sscanf函數時,需要確保格式指示符和要讀取的數據類型匹配。