加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 1、strlen,sizeof
    • 2、scanf
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

strlen,sizeof,scanf對字符串計算

04/15 10:10
1774
閱讀需 3 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1、strlen,sizeof

strlen,sizeof都可以對字符串長度進行計算

char test[]= “hello” ? ? ? ? 這種雙引號字符串后面默認是有個 ?空字符

sizeof (test) ? ? ? ? ?為6

strlen (test) ? ? ? ? ? 為5

sizeof:可用于任何變量名、類型名或常量值,當用于變量名(不是數(shù)組名)或常量時,不需要加括弧。

strlen:從內(nèi)存的某個位置(可以是字符串開頭,中間某個位置,甚至是某個不確定的內(nèi)存區(qū)域)開始掃描,直到碰到第一個字符串結(jié)知束符''為止,然后返回計數(shù)器值。

sizeof 可以用類型做參數(shù),strlen 只能用 char* 做參數(shù),且必須是以 結(jié)尾的。數(shù)組做sizeo的參數(shù)不退化,傳遞給strlen就退化為指針了。

sizeof是在編譯的時候生效的,strlen是函數(shù),在運行時生效。

2、scanf

scanf是從標準輸入設備獲取數(shù)據(jù)。以串口為例,使用串口助手發(fā)送數(shù)據(jù)的話,需要勾選發(fā)送新行。

scanf在讀取輸入的時候,分為多種情況:

一、讀取字符串的時候(%s)

scanf會讀取除了空白字符以外的所有字符,并在讀取到第一個空白字符時結(jié)束讀取,將空白字符之后的所有字符都暫存在緩沖區(qū)中。除非緩沖區(qū)被刷新或者字符被讀取走,否則將一直停留在緩沖區(qū)中。對%s來說,回車和空格都是當前函數(shù)的結(jié)束字符

二、讀取字符的時候(%c )

scanf會讀取所有字符包括空白字符。但是他會在讀取到第一個空白字符后結(jié)束讀取。將空白字符之后的所有字符都暫存在緩沖區(qū)中。

三、讀取除了字符和字符串以外的所有輸入的時候

scanf函數(shù)每次讀取一個字符,跳過所有的空白字符,直到遇到第一個非空白字符的時候才開始讀取。

scanf是一個阻塞函數(shù),如果沒有獲取到數(shù)據(jù),就會一直等待這個要注意。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
KSZ8463RLI 1 Microchip Technology Inc DATACOM, MANCHESTER ENCODER

ECAD模型

下載ECAD模型
$8.15 查看
SMD2440-011 1 Honeywell Microelectronics & Precision Sensors Photo Transistor Detector, Surface Mount, 3.81 X 2.54 X 2.10 MM, CERAMIC PACKAGE-SME2440
$8.61 查看
SDINBDG4-8G-XI1 1 Western Digital Corp Flash,
$56.03 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜