sscanf
是一個(gè)C語言庫函數(shù),用于從字符串中讀取和解析數(shù)據(jù)
sscanf
的格式字符串中,你可以使用空格來分隔不同的輸入項(xiàng)。例如,如果你想從一個(gè)字符串中讀取兩個(gè)整數(shù),可以使用以下代碼:int a, b;
char input[] = "10 20";
sscanf(input, "%d %d", &a, &b);
%d
表示整數(shù),%f
表示浮點(diǎn)數(shù),%s
表示字符串等。例如:int a;
float b;
char input[] = "10 20.5";
sscanf(input, "%d %f", &a, &b);
[]
。例如,如果你想跳過字符串中的逗號,可以使用以下代碼:int a, b;
char input[] = "10,20";
sscanf(input, "%d[,]%d", &a, &b);
%n
(其中n是一個(gè)整數(shù))來限制字符串的長度。例如,如果你想讀取最多10個(gè)字符的字符串,可以使用以下代碼:char str[11];
char input[] = "Hello, World!";
sscanf(input, "%10s", str);
char name[20];
char input[] = "Name: John Doe";
sscanf(input, "Name: %19s", name);
%n
來檢查是否成功讀取了這些字段。例如:int a, b;
char input1[] = "10";
char input2[] = "10 20";
int count;
sscanf(input1, "%d%n", &a, &count);
if (count == strlen(input1)) {
b = 0; // 設(shè)置默認(rèn)值
} else {
sscanf(input1 + count, " %d", &b);
}
sscanf(input2, "%d%n", &a, &count);
if (count == strlen(input2)) {
b = 0; // 設(shè)置默認(rèn)值
} else {
sscanf(input2 + count, " %d", &b);
}
這些技巧可以幫助你更有效地使用sscanf
函數(shù)從字符串中讀取和解析數(shù)據(jù)。請注意,sscanf
函數(shù)在處理錯(cuò)誤輸入時(shí)可能會產(chǎn)生未定義的行為,因此在實(shí)際應(yīng)用中要謹(jǐn)慎使用。