5大C語(yǔ)言輸入函數(shù)知多少?


前言
上章節(jié)講解了《C語(yǔ)言四大內(nèi)置輸出函數(shù)你知多少?C語(yǔ)言基本程序交互之輸出到屏幕》,本欄目主要講解C語(yǔ)言基本交互處理之輸入篇。學(xué)會(huì)基本的輸入和輸出,大家就可以做一些簡(jiǎn)單的交互咯。

C語(yǔ)言內(nèi)置輸入函數(shù)
C語(yǔ)言提供了執(zhí)行輸入操作的內(nèi)置函數(shù)。輸入操作用于從鍵盤(pán)讀取用戶值(輸入)。c語(yǔ)言提供以下內(nèi)置輸入功能:
scanf():標(biāo)準(zhǔn)輸入
getchar():字符輸入
getch():不可見(jiàn),字符輸入
gets():字符串輸入
fscanf():格式化寫(xiě)入

C語(yǔ)言scanf函數(shù)
scanf函數(shù)三要素:
scanf用于從鍵盤(pán)讀取不同數(shù)據(jù)類型的多個(gè)數(shù)據(jù)值。
scanf需屬于“ stdio.h ” 的頭文件
scanf使用#include
包含頭文件
scanf讀取數(shù)據(jù)到變量

值得一提的是:vs中對(duì)這個(gè)函數(shù)做了一些修改,推薦使用更為安全的scanf_s 函數(shù)?
不想用在程序最上面加上宏定義去掉安全檢查。
即:#define _CRT_SECURE_NO_WARNINGS
或者修改項(xiàng)目屬性去掉SDL檢查

當(dāng)然你也可以使用他改進(jìn)后的scanf函數(shù),也就是scanf_s
scanf同時(shí)輸入不同數(shù)據(jù)
scanf輸入不同數(shù)據(jù)的時(shí)候,采用不同的格式控制字符即可。注意的是通常scanf函數(shù)的格式控制字符是不需要精度控制的哦。如下測(cè)試代碼:

C語(yǔ)言中格式控制字符常用的主要有以下:
int : %d
float: %f
double:%lf
char:%c
字符串:%s
十六進(jìn)制:%x
八進(jìn)制:%o
指針類型:%p
無(wú)符號(hào)整形:%u
還有一些比較少用的在這里就不列舉不出來(lái)。
scanf函數(shù)的返回值
scanf函數(shù)返回一個(gè)整數(shù)值,該值等于使用scanf函數(shù)讀取的輸入值的總數(shù),如下測(cè)試代碼:


從上圖中的可以看到,當(dāng)我們做一次完整輸入的時(shí)候, 緩沖區(qū)中還存在一個(gè)\n字符 ,所以我們?cè)僮鲎址斎氲臅r(shí)候經(jīng)常存在跳過(guò)現(xiàn)象,如下圖:

如何避免呢?清空緩沖區(qū)就好了,在字符或者字符輸入之前清空緩沖區(qū)就好了,一般有以下函數(shù):
setbuf(stdin,NULL);
fflush(stdin);
當(dāng)然你也可以自己寫(xiě)代碼避免,如下測(cè)試代碼:


gechar函數(shù)
getchar函數(shù)用于從鍵盤(pán)讀取字符并將其返回給程序。此功能用于只讀單個(gè)字符。要讀取多個(gè)字符,我們需要多次寫(xiě)入或使用循環(huán)語(yǔ)句??紤]以下示例:


getc函數(shù)
getch函數(shù)類似于getchar函數(shù)。getch函數(shù)用于從鍵盤(pán)讀取字符并將其返回給程序。此功能用于只讀單個(gè)字符。要讀取多個(gè)字符,我們需要多次寫(xiě)入或使用循環(huán)語(yǔ)句??紤]以下示例程序:

注意點(diǎn):
getch屬于conio.h,即用前需#include
vs中該函數(shù)要使用_getch

gets函數(shù)
gets函數(shù)用于讀取一行字符串并將其存儲(chǔ)到字符數(shù)組中。gets函數(shù)讀取一行字符串或字符序列,直到換行符號(hào)進(jìn)入??紤]以下示例程序:

注意點(diǎn):
vs中該函數(shù)該函數(shù)改為gets_s ,增加一個(gè)長(zhǎng)度參數(shù)
上圖代碼中數(shù)組如果沒(méi)有學(xué)習(xí)的同學(xué)后續(xù)文章將會(huì)詳細(xì)講解。

fscanf函數(shù)
fscanf函數(shù)與文件的概念一起使用。fscanf函數(shù)用于從文件中讀取數(shù)據(jù)值。如果要使用fscanf函數(shù),必須在讀取模式下打開(kāi)文件,而鍵盤(pán)上可以使用stdin表示。故有以下案例:

這個(gè)更多的是格式化讀寫(xiě)文件,后續(xù)章節(jié)會(huì)詳細(xì)講解

尾言
本欄目作業(yè):從鍵盤(pán)鍵入長(zhǎng)方形的邊信息,求解長(zhǎng)方形的面積和周長(zhǎng),打印出面積和周長(zhǎng)

