欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

scanf的用法

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

1.正常用法

1.1 int類型

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

1.2 float類型

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

1.3 char類型

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

1.4 字符串類型

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

2.拓展用法

2.1 限制讀取的長度

int 類型

#include<stdio.h>
int main() {
	int a = 10;
	scanf("%3d", &a);
	printf("%d", a);
}
//scanf("%3d", &a)限制輸入數(shù)據(jù)的長度最多為3,
//如果數(shù)據(jù)長度大于3則只讀取前3位數(shù)據(jù),
//如果輸入數(shù)據(jù)長度小于3,因為有回車符的存在也會結(jié)束輸入

char類型不能限制,因為只有一個,但是數(shù)組字符串可以

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

scanf的char類型

2.2 scanf匹配特定的字符

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

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

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

測試1

abcd沒有順序要求,這四個字符什么順序均可以被錄入

測試2

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

測試3

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

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

測試1 >正常讀?。ㄖ虚g沒有特殊字符)

全讀進(jìn)去了

測試2 >中間有其他字符

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

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

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

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

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

測試3>有制表符tab

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

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

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

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

測試2> 遇到其他符號終止

2.3 不匹配某些字符

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

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

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

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

scanf實現(xiàn)gets

2.4 丟棄某些字符

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

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

這種寫法有一個問題就是,在可讀入字符后面如果還有符合丟棄條件的字符也會讀取,而不會被丟棄,例如:

問題表示

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

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

相關(guān)文章

  • C++二分查找算法實例

    C++二分查找算法實例

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

    在C語言里單引號和雙引號的區(qū)別

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

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

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

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

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

    xxx_cast類型轉(zhuǎn)換的實現(xiàn)方法

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

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

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

    c++調(diào)用動態(tài)庫LNK2019和LNK1120無法解析的外部命令

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

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

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

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

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

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

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

最新評論