scanf 函數(shù)用于從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),語(yǔ)法為 int scanf(const char *format, …)。它需要一個(gè)格式字符串,其中包含占位符 (%c, %d, %f, %s),用于指定讀取數(shù)據(jù)的格式和數(shù)量。scanf 函數(shù)的返回值表示成功讀取的變量個(gè)數(shù),成功時(shí) >=1,失敗時(shí)返回 0,出錯(cuò)時(shí)返回 -1。
scanf 函數(shù)的用法
定義
scanf 函數(shù)用于從標(biāo)準(zhǔn)輸入設(shè)備(通常是鍵盤(pán))讀取格式化數(shù)據(jù)。
語(yǔ)法
int scanf(const char *format, ...);
參數(shù)
- format: 指向格式字符串的指針,指定要讀取數(shù)據(jù)的格式和數(shù)量。
- …: 可變數(shù)量的參數(shù),分別與格式字符串中的占位符對(duì)應(yīng),用來(lái)存儲(chǔ)讀取到的數(shù)據(jù)。
格式字符串
格式字符串是一個(gè)包含占位符的字符串,指示 scanf 函數(shù)應(yīng)該如何讀取數(shù)據(jù)。常用的占位符包括:
- %c: 讀取一個(gè)字符
- %d: 讀取一個(gè)十進(jìn)制整數(shù)
- %f: 讀取一個(gè)浮點(diǎn)數(shù)
- %s: 讀取一個(gè)字符串
使用示例
int age; char name[20]; scanf("%d %s", &age, name);
在上面的示例中,scanf 函數(shù)從標(biāo)準(zhǔn)輸入中讀取一個(gè)整數(shù)(用 %d 占位符指定)存儲(chǔ)在變量 age 中,然后讀取一個(gè)字符串(用 %s 占位符指定)存儲(chǔ)在字符數(shù)組 name 中。
返回值
scanf 函數(shù)返回成功讀取的變量個(gè)數(shù)。如果讀取成功,則返回 >=1。如果因?yàn)楦袷藉e(cuò)誤或遇到文件結(jié)尾而導(dǎo)致讀取失敗,則返回 0。-1 表示出錯(cuò)。
注意
使用 scanf 函數(shù)時(shí)需要注意以下幾點(diǎn):
- 格式字符串中占位符的數(shù)量必須與要讀取的參數(shù)數(shù)量相匹配。
- 變量的類型必須與格式字符串中指定的格式對(duì)應(yīng)。
- 標(biāo)準(zhǔn)輸入中必須有足夠的數(shù)據(jù)滿足格式字符串的要求。