sscanf正則表達式用法 C 中如何用sscanf函數(shù)字符串從字符串中讀取特定位置的數(shù)據(jù)?
分居線抱怨薛飛的解釋太離譜了,不知從何說起。(↑事實上,我認為這是先進的黑色不要指望sscanf。它使用空格、回車符、水平制表符等作為字符串之間的分隔符。也就是說,當遇到空格等時,它認為前面的字符串已
分居線抱怨薛飛的解釋太離譜了,不知從何說起。(↑事實上,我認為這是先進的黑色
不要指望sscanf。它使用空格、回車符、水平制表符等作為字符串之間的分隔符。也就是說,當遇到空格等時,它認為前面的字符串已經(jīng)輸入,并正確地讀取它。
要獲取帶空格的字符串,可以選擇gets、fgets等,也可以編寫自己的代碼或函數(shù)。
C 中如何用sscanf函數(shù)字符串從字符串中讀取特定位置的數(shù)據(jù)?
1. 常見用法。Charbuf[512]sscanf(“123456”,%s”,buf)//這里buf是數(shù)組名,表示以%s的形式將123456存儲在buf中,printf(%sn”,buf)的結果是:123456 2。取指定長度的字符串。例如,在下面的示例中,字符串的最大長度為4字節(jié)。Sscanf(%123456,%4S,buf)printf(%sn,buf)結果是:1234 3。獲取指定字符的字符串。例如,在下面的示例中,獲取字符串直到遇到空格。Sscanf(“123456abcdef”,“%[^]”,buf)printf(%sn”,buf)結果是:123456
因為在現(xiàn)實生活中,字符串形式的時間可能有很多形式,如月、日、年、月、日,或者中間的分隔符也可能不同。因此,C語言不提供這種轉換功能。如果需要,可以在確定字符串的組織格式的前提下編寫轉換函數(shù)。有兩個想法:1。傳入字符串,逐位解析每個字符,并智能地檢查數(shù)字之間的分隔符。然后根據(jù)分隔符,取出每一位的數(shù)值,如年、日、時、分、秒等,最后賦給時間結構的相應成員變量。2使用sscanf按照約定的格式構造相應的格式字符串,并將值提取到相應的變量中。與這兩種方法相比,第一種方法代碼較多,但可以兼容更復雜的輸入法,使輸入更靈活,程序更健壯。第二種方法適用于嚴格的輸入格式,用最少的代碼量達到效果。
sscanf輸入字符串有空值時,怎么才能得到正確的結果?
字符串輸入格式,
逗號以“%[^,]”分隔。
逗號空格用“%[^,”]%*C:
sscanf(STR,“%[^,”]%*C%LF,%LF,%LF”,name,&ic1,&ic2,&ic3)分隔
空格用%s%LF%LF格式分隔
#include
使用命名空間STD
#include
#include
int main()
{
char STR[]=“Wang,3,4,5“
char name[10
]double IC1,IC2,IC3
sscanf(STR,”%[^,],%LF,%LF“,name,&ic1,&ic2,&ic3)
printf(%s%LF%LFn”,name,IC1,IC2,IC3)
return 0
}
輸出雙精度類型,可以是%LF格式。