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


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

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

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

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

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

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


從上圖中的可以看到,當我們做一次完整輸入的時候, 緩沖區(qū)中還存在一個\n字符 ,所以我們再做字符輸入的時候經(jīng)常存在跳過現(xiàn)象,如下圖:

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


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


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

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

gets函數(shù)
gets函數(shù)用于讀取一行字符串并將其存儲到字符數(shù)組中。gets函數(shù)讀取一行字符串或字符序列,直到換行符號進入。考慮以下示例程序:

注意點:
vs中該函數(shù)該函數(shù)改為gets_s ,增加一個長度參數(shù)
上圖代碼中數(shù)組如果沒有學習的同學后續(xù)文章將會詳細講解。

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

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

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

