亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文掌握scanf的用法實(shí)例小結(jié)

 更新時(shí)間:2023年12月09日 11:19:33   作者:翻轉(zhuǎn)的烏龜  
scanf的基本用法除了常規(guī)的輸入操作外還有一些特殊的用法,使用這些用法可以很方便的在輸入中讀取想要的數(shù)據(jù),這篇文章主要介紹了scanf的用法,需要的朋友可以參考下

scanf的用法

scanf的基本用法除了常規(guī)的輸入操作外還有一些特殊的用法,使用這些用法可以很方便的在輸入中讀取想要的數(shù)據(jù)

1.正常用法

1.1 int類(lèi)型

#include<stdio.h>
int main() {
	int a = 0;
	scanf("%d", &a);
	printf("%d", a);
}
//輸入10 輸出10

1.2 float類(lèi)型

#include<stdio.h>
int main() {
	float a = 1.1f;
	scanf("%f", &a);
	printf("%f", a);
}
//輸入浮點(diǎn)數(shù),輸出浮點(diǎn)數(shù),自動(dòng)補(bǔ)齊小數(shù)點(diǎn)后6位
//double同理

1.3 char類(lèi)型

#include<stdio.h>
int main() {
	char a = 'm';
	scanf("%c", &a);
	printf("%c", a);
}
//輸入字符,輸出字符,只需要控制打印的格式即可

1.4 字符串類(lèi)型

#include<stdio.h>
int main() {
	char a[] = "abcdefg";
	scanf("%s", a);
	printf("%s", a);
}
//輸入字符數(shù)組,輸出字符數(shù)組,但是輸入的字符大小不能超過(guò)數(shù)組大小

2.拓展用法

2.1 限制讀取的長(zhǎng)度

int 類(lèi)型

#include<stdio.h>
int main() {
	int a = 10;
	scanf("%3d", &a);
	printf("%d", a);
}
//scanf("%3d", &a)限制輸入數(shù)據(jù)的長(zhǎng)度最多為3,
//如果數(shù)據(jù)長(zhǎng)度大于3則只讀取前3位數(shù)據(jù),
//如果輸入數(shù)據(jù)長(zhǎng)度小于3,因?yàn)橛谢剀?chē)符的存在也會(huì)結(jié)束輸入

char類(lèi)型不能限制,因?yàn)橹挥幸粋€(gè),但是數(shù)組字符串可以

#include<stdio.h>
int main() {
	char a[10] = "ada";
	scanf("%5s", a);
	printf("%s", a);
}
//同上所說(shuō),最多4位,不足4位也會(huì)因?yàn)閾Q行符結(jié)束

scanf的char類(lèi)型

2.2 scanf匹配特定的字符

scanf匹配特定字符的格式為:%[xxx],[ ]包圍起來(lái)的是需要讀取的字符集合

2.2.1 只讀取想要的特定字符
char a[10];
scanf("%[abcd]", a);

%[abcd]表示只讀取字符abcd,遇到其它的字符就讀取結(jié)束,如果abcd字符在字符串的中間部分那么就不能正常讀取字符

測(cè)試1

abcd沒(méi)有順序要求,這四個(gè)字符什么順序均可以被錄入

測(cè)試2

只讀取到ab,遇到f結(jié)束

測(cè)試3

第一個(gè)字符是n結(jié)束輸入,字符串未初始化輸出為隨機(jī)值燙燙燙

2.2.2 只讀取所有的大小寫(xiě)字母
#include<stdio.h>
int main() {
	char a[20];
	scanf("%[a-zA-Z]", a);
	printf("%s", a);
}
//讀取大小寫(xiě)字母

測(cè)試1 >正常讀取(中間沒(méi)有特殊字符)

全讀進(jìn)去了

測(cè)試2 >中間有其他字符

遇到空格(其他字符),終止讀取,打印讀取到的abcF

下面做出改進(jìn),讓代碼可以打印空格

#include<stdio.h>
int main() {
	char a[20];
	scanf("%[a-z A-Z]", a);
	printf("%s", a);
	//其實(shí)就是在中間加一個(gè)空格,意思是空格也算匹配字符如果輸入中有空格符也會(huì)被正常讀取
}

這條語(yǔ)句scanf("%[a-z A-Z]", a)空格的位置不一定要放在中間,
可以放在最前面scanf("%[ a-zA-Z]", a),
也可以放在最后面,scanf("%[a-zA-Z ]", a)

輸入的字母中間除了空格還有制表符(兩者都算空白符),需要再加一個(gè)\t

測(cè)試3>有制表符tab

#include<stdio.h>
int main() {
	char a[20]="abcd";
	scanf("%[a-z \tA-Z ]", a);
	printf("%s", a);
}

如果輸入的字母中間除了空格還有制表符(兩者都算空白符),
需要再加一個(gè)\t

2.2.3 只讀取數(shù)字[0-9]
#include<stdio.h>
int main() {
	char a[20]="abcd";
	scanf("%[0-9]", a);
	printf("%s", a);
}

測(cè)試1> 正常讀取數(shù)字

測(cè)試2> 遇到其他符號(hào)終止

2.3 不匹配某些字符

不匹配某些字符只需要在[ ]內(nèi)的最前面加一個(gè)^就可以了,例如:

#include<stdio.h>
int main() {
	char a[20]="abcd";
	scanf("%[^0-9]", a);
	printf("%s", a);
}

scanf函數(shù)可以用不匹配某些字符的寫(xiě)法來(lái)完全替代gets函數(shù)

#include<stdio.h>
int main() {
	char a[20]="abcd";
	scanf("%[^\n]", a);
	//讀取除換行符之外的所有字符(和gets的功能一模一樣)
	printf("%s", a);
}

scanf實(shí)現(xiàn)gets

2.4 丟棄某些字符

scanf() 允許把讀取到的數(shù)據(jù)直接丟棄,不往變量中存放,
具體方法就是在 % 后面加一個(gè)* 例如:

#include<stdio.h>
int main() {
	char a[20]="\0";
	scanf("%*[a-z]");
	scanf("%s", a);
	printf("%s", a);
}

這種寫(xiě)法有一個(gè)問(wèn)題就是,在可讀入字符后面如果還有符合丟棄條件的字符也會(huì)讀取,而不會(huì)被丟棄,例如:

問(wèn)題表示

上面圖片表達(dá)的意思是,當(dāng)讀取到的字符串里面分段出現(xiàn)不滿(mǎn)足的字符,
則丟棄字符只發(fā)生在不滿(mǎn)足丟棄條件的第一個(gè)字符之前
說(shuō)人話(huà)就是
丟棄字符只發(fā)生一次
ABCL前面的abc確實(shí)被丟棄了,但是后面的沒(méi)有被丟棄,
當(dāng)丟棄發(fā)生到結(jié)束后,就不會(huì)再進(jìn)行丟棄,只發(fā)生一次,后面遇到要丟棄的字符也不會(huì)起到丟棄作用

到此這篇關(guān)于一文掌握scanf的用法的文章就介紹到這了,更多相關(guān)c++ scanf用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++二分查找算法實(shí)例

    C++二分查找算法實(shí)例

    這篇文章主要為大家詳細(xì)介紹了C++二分查找算法的實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 在C語(yǔ)言里單引號(hào)和雙引號(hào)的區(qū)別

    在C語(yǔ)言里單引號(hào)和雙引號(hào)的區(qū)別

    這篇文章主要介紹了在C語(yǔ)言里單引號(hào)和雙引號(hào)的區(qū)別,本文通過(guò)代碼的實(shí)例和注釋的詳細(xì)的說(shuō)明了單引號(hào)和雙引號(hào)的概念與區(qū)別,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實(shí)現(xiàn)學(xué)生管理系統(tǒng)示例解析

    C++實(shí)現(xiàn)學(xué)生管理系統(tǒng)示例解析

    這篇文章主要介紹了C++實(shí)現(xiàn)學(xué)生管理系統(tǒng)示例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 超級(jí)詳細(xì)講解C++中的多態(tài)

    超級(jí)詳細(xì)講解C++中的多態(tài)

    多態(tài)是在不同繼承關(guān)系的類(lèi)對(duì)象,去調(diào)同一函數(shù),產(chǎn)生了不同的行為,下面這篇文章主要給大家介紹了關(guān)于C++中多態(tài)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • xxx_cast類(lèi)型轉(zhuǎn)換的實(shí)現(xiàn)方法

    xxx_cast類(lèi)型轉(zhuǎn)換的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇xxx_cast類(lèi)型轉(zhuǎn)換的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • C++ throw關(guān)鍵字實(shí)現(xiàn)拋出異常和異常規(guī)范

    C++ throw關(guān)鍵字實(shí)現(xiàn)拋出異常和異常規(guī)范

    本文主要介紹了C++ throw關(guān)鍵字實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • c++調(diào)用動(dòng)態(tài)庫(kù)LNK2019和LNK1120無(wú)法解析的外部命令

    c++調(diào)用動(dòng)態(tài)庫(kù)LNK2019和LNK1120無(wú)法解析的外部命令

    本文主要介紹了c++調(diào)用動(dòng)態(tài)庫(kù)LNK2019和LNK1120無(wú)法解析的外部命令, 出現(xiàn)這個(gè)錯(cuò)誤一般都是函數(shù)只找到聲明但沒(méi)有實(shí)現(xiàn),或者是少了什么鏈接庫(kù),下面就來(lái)解決一下
    2024-06-06
  • C語(yǔ)言實(shí)現(xiàn)斗地主的核心算法

    C語(yǔ)言實(shí)現(xiàn)斗地主的核心算法

    本文給大家分享的是使用C語(yǔ)言實(shí)現(xiàn)的斗地主游戲的核心算法,主要實(shí)現(xiàn)了面向?qū)ο笤O(shè)計(jì),洗牌、發(fā)牌、判斷牌型、比較牌的大小、游戲規(guī)則等算法。通過(guò)這個(gè)斗地主小項(xiàng)目的練習(xí),提高了我的面向?qū)ο笤O(shè)計(jì)能力,加深了對(duì)算法的理解。最近把這些設(shè)計(jì)和算法分享給大家。
    2015-03-03
  • C語(yǔ)言文件操作詳情(二)

    C語(yǔ)言文件操作詳情(二)

    這篇文章主要介紹了C語(yǔ)言文件操作詳情,文章基于上一篇文章的內(nèi)容繼續(xù)展開(kāi)C語(yǔ)言文件操作的相關(guān)詳情,需要的小伙伴可以參考一下
    2022-04-04
  • C++數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)鄰接表

    C++數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)鄰接表

    這篇文章主要為大家詳細(xì)介紹了C++數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)鄰接表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評(píng)論