c語(yǔ)言中scanf的基本用法
前言
scanf()是C語(yǔ)言的格式輸入函數(shù),和printf函數(shù)一樣被聲明在stdio.h頭文件中,它的基本使用很簡(jiǎn)單:
1 int a; 2 scanf("%d",&a);//程序執(zhí)行到這里時(shí),就等待用戶輸入;它接收的是變量的地址 //所以一般情況下除了指針型變量和數(shù)組名要給變量加上取地址符&
下面主要介紹了C語(yǔ)言中scanf的用法和注意事項(xiàng),下面來(lái)一起看看詳細(xì)的介紹吧
scanf概念
scanf是格式輸入函數(shù),功能是在屏幕上輸入指定的信息。簡(jiǎn)單的來(lái)說(shuō)和printf相似卻不相同。
scanf調(diào)用格式: scanf("<格式化字符串>",<地址表>);
如:
#include <stdio.h> int main() { int a,b,c; printf(“input three data:\n”);//使用 scanf 之前先用 printf 提示輸入。 scanf("%d%d%d",&a,&b,&c); // scanf 的“輸入?yún)?shù)”中,前面的取地址符&記住 printf("%d,%d,%d/n",a,b,c); return 0; }
運(yùn)行時(shí)按如下方式輸入三個(gè)值:
3□4□5↙(輸入a,b,c的值)
3,4,5 (printf輸出的a,b,c的值)
(1) &a、&b、&c中的&是地址運(yùn)算符,分別獲得這三個(gè)變量的內(nèi)存地址。
(2) "%d%d%d"是按十進(jìn)值格式輸入三個(gè)數(shù)值。輸入時(shí),在兩個(gè)數(shù)據(jù)之間可以用一個(gè)或多個(gè)空格、tab鍵、回車鍵分隔。
以下是合法輸入方式:
① 3□□4□□□□5↙
② 3↙
4□5↙
③ 3(tab鍵)4↙
5↙
我們常用到的字符串有:
%c 讀入一個(gè)字符。
%d 讀入十進(jìn)制整數(shù)。
%f 用來(lái)輸出實(shí)數(shù),以小數(shù)形式輸出。
%lf 用來(lái)輸出實(shí)數(shù),以更長(zhǎng)的小數(shù)形式輸出。
分享下學(xué)習(xí)中明白的注意點(diǎn):
1 當(dāng)定義一個(gè)字符變量時(shí),在鍵盤上輸入一個(gè)scanf會(huì)吸收回車和空格字符,為了進(jìn)行代碼的可行性需在函數(shù)結(jié)束前加函數(shù)getchar()進(jìn)行吸收。例如:
定義一個(gè)字符z,是scanf是從鍵盤上獲取一個(gè)值。因?yàn)槲覀兌x的是一個(gè)字符,所以將鍵盤上所有獲得的字符賦值給z,而空格和回車也是字符,會(huì)影響字符賦值給z,所以要在末尾加個(gè)getchar()函數(shù)進(jìn)行吸收。
沒(méi)加getchar():
程序第二次進(jìn)行運(yùn)算時(shí)回車成了運(yùn)算符了。
正確結(jié)果是:
2 scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是變量地址,而不是變量名。例如,若a和b為int型變量,如果寫成scanf("%f%f%f",a,b,c)是錯(cuò)誤的。
scanf 的使用小結(jié):
1 在 scanf 的“輸入?yún)?shù)”中,變量前面的取地址符&不要忘記。
2 scanf 中雙引號(hào)內(nèi),除了“輸入控制符”外什么都不要寫。
3 “輸出控制符”和“輸出參數(shù)”無(wú)論在“順序上”還是在“個(gè)數(shù)上”一定要一一對(duì)應(yīng)。
4 “輸入控制符”的類型和變量所定義的類型一定要一致。對(duì)于從鍵盤輸入的數(shù)據(jù)的類 型,數(shù)據(jù)是用戶輸入的,程序員是無(wú)法決定的,所以在寫程序時(shí)要考慮容錯(cuò)處理。
5 使用 scanf 之前先用 printf 提示輸入。
總結(jié)
到此這篇關(guān)于c語(yǔ)言中scanf的基本用法的文章就介紹到這了,更多相關(guān)c語(yǔ)言scanf用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實(shí)現(xiàn)二叉樹(shù)非遞歸遍歷算法詳解
在C++中,二叉樹(shù)非遞歸遍歷是一種常用的算法,可避免遞歸過(guò)程中的系統(tǒng)開(kāi)銷和棧溢出問(wèn)題。非遞歸遍歷算法利用棧數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),可以實(shí)現(xiàn)前序、中序和后序遍歷,是C++程序員必備技能之一2023-04-04c++類型轉(zhuǎn)換及RTTI運(yùn)行階段類型識(shí)別
這篇文章主要為大家介紹了c++類型轉(zhuǎn)換及RTTI運(yùn)行階段類型識(shí)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2023-05-05C++ 中滾動(dòng)條的滾動(dòng)問(wèn)題
本文主要通過(guò)一個(gè)示例,給大家介紹了C++中滾動(dòng)條的滾動(dòng)問(wèn)題,以及相關(guān)參數(shù)的解釋,非常的詳細(xì),有需要的小伙伴可以參考下。2015-06-06聊聊C++中右值引用和移動(dòng)構(gòu)造函數(shù)的使用
這篇文章主要是來(lái)和大家一起聊聊C++中右值引用和移動(dòng)構(gòu)造函數(shù)的使用,文中通過(guò)示例進(jìn)行了詳細(xì)講解,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-07-07C++保存HBITMAP為位圖文件的實(shí)現(xiàn)方法
這篇文章主要介紹了C++保存HBITMAP為位圖文件的實(shí)現(xiàn)方法,幫助大家更好的理解和使用c++,感興趣的朋友可以了解下2021-01-01C中的open(),?write(),?close(),?fopen()詳解
本文主要介紹了C語(yǔ)言中的open(),?write(),?close(),?fopen()等文件操作函數(shù),open()函數(shù)用于打開(kāi)文件,write()函數(shù)用于寫入數(shù)據(jù),close()函數(shù)用于關(guān)閉已打開(kāi)的文件描述符2024-10-10C語(yǔ)言實(shí)現(xiàn)單鏈表逆序與逆序輸出實(shí)例
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)單鏈表逆序與逆序輸出,是數(shù)據(jù)結(jié)構(gòu)與算法中比較基礎(chǔ)的重要內(nèi)容,有必要加以牢固掌握,需要的朋友可以參考下2014-08-08