![](/img/trans.png)
[英]Is it possible to use a strcpy inside a scanf or a sscanf? (in C language)
[英]C language: scanf and sscanf expressions
我在 scanf 和 sscanf 參數中遇到過類似這樣的表達式:
sscanf(buffer, "%d,%100[^,]%*c%f", destination_pointer)
或者
scanf("\n%99s", destination);
解釋這些的正確方法是什么? 我知道“%s %c %d”之類的東西是什么,而且 %100 或通常的“%number”是要讀取的輸入的大小。 但是剩下的呢? 我能找到的只是基本的例子,沒有接近這個復雜的東西。 有參考指南嗎?
解釋這些的正確方法是什么?
sscanf(buffer, "%d,%100[^,]%*c%f", destination_pointer)
是無效調用。 有 3 個需要參數的轉換說明符 - %d
、 %[]
、 %f
。 這意味着在格式化字符串后正好需要 3 個參數,但只提供了一個destinantion_pointer
。
%d
- 忽略任何空白字符,讀取以 10 為基數的int
,
- 讀一個逗號%100[^,]
- 讀取最多 100 個不是逗號的字符。 目標緩沖區中最多存儲 101 個字節(100 個字符 + 空字節)。
%[set]
- 讀取集合中的字符%[^set]
- 讀取不在集合中的字符%*c
- 忽略一個字符(逗號,因為%100[^,]
一直讀到逗號,或者字符串結束,這將使scanf
返回此處)。 注意 - 使用*
忽略轉換結果會使scanf
在讀取成功的情況下不會增加返回值。%f
- 忽略任何空白字符,讀取浮點數(任何格式 - 十進制、科學或十六進制)scanf("\\n%99s", 目的地);
\\n
- 讀取(並忽略)任意數量的空白字符(空白,表示任何內容isspace()
返回非零值,因此空格、換頁、換行、回車、制表符或垂直制表符)%99s
- 忽略任何前導空白字符(它前面的\\n
是無用的...),然后讀取最多 99 個不是空白的字符(結果緩沖區必須至少有 100 個字節長)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.