最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文掌握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類型

#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);
}
//輸入浮點(diǎn)數(shù),輸出浮點(diǎn)數(shù),自動(dòng)補(bǔ)齊小數(shù)點(diǎn)后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 限制讀取的長(zhǎng)度

int 類型

#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)橛谢剀嚪拇嬖谝矔?huì)結(jié)束輸入

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

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

scanf的char類型

2.2 scanf匹配特定的字符

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

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

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

測(cè)試1

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

測(cè)試2

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

測(cè)試3

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

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

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

全讀進(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ì)被正常讀取
}

這條語句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ù)可以用不匹配某些字符的寫法來完全替代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);
}

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

問題表示

上面圖片表達(dá)的意思是,當(dāng)讀取到的字符串里面分段出現(xiàn)不滿足的字符,
則丟棄字符只發(fā)生在不滿足丟棄條件的第一個(gè)字符之前
說人話就是
丟棄字符只發(fā)生一次
ABCL前面的abc確實(shí)被丟棄了,但是后面的沒有被丟棄,
當(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)文章

  • 八皇后問題的相關(guān)C++代碼解答示例

    八皇后問題的相關(guān)C++代碼解答示例

    這篇文章主要介紹了八皇后問題的相關(guān)C++代碼解答示例,文中包括ACM競(jìng)賽的八皇后相關(guān)知識(shí)的練習(xí)實(shí)例,需要的朋友可以參考下
    2015-08-08
  • 解析wprintf 中使用%I64d格式化輸出LONGLONG的詳細(xì)介紹

    解析wprintf 中使用%I64d格式化輸出LONGLONG的詳細(xì)介紹

    本篇文章是對(duì)wprintf 中使用%I64d格式化輸出LONGLONG進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++多線程與鎖機(jī)制使用解讀

    C++多線程與鎖機(jī)制使用解讀

    文章主要介紹了C++中的多線程編程知識(shí),包括線程的創(chuàng)建、參數(shù)傳遞、線程休眠、互斥鎖、條件變量、原子操作、死鎖預(yù)防、線程局部存儲(chǔ)、讀寫鎖和自旋鎖等內(nèi)容,并給出了相應(yīng)的實(shí)現(xiàn)方法和使用場(chǎng)景
    2026-04-04
  • N叉樹的三種遍歷(層次遍歷、前序遍歷、后序遍歷)

    N叉樹的三種遍歷(層次遍歷、前序遍歷、后序遍歷)

    本文主要介紹了N叉樹的三種遍歷(層次遍歷、前序遍歷、后序遍歷),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • C++簡(jiǎn)明講解類型轉(zhuǎn)換的使用與作用

    C++簡(jiǎn)明講解類型轉(zhuǎn)換的使用與作用

    類型轉(zhuǎn)換(type?cast),是高級(jí)語言的一個(gè)基本語法。它被實(shí)現(xiàn)為一個(gè)特殊的運(yùn)算符,以小括號(hào)內(nèi)加上類型名來表示,接下來讓我們一起來詳細(xì)了解
    2022-04-04
  • 詳解C++中變量的初始化規(guī)則

    詳解C++中變量的初始化規(guī)則

    這篇文章詳細(xì)介紹了關(guān)于C++中變量的初始化規(guī)則,C++如果不對(duì)變量初始化,可能會(huì)導(dǎo)致很多后果,所以學(xué)習(xí)C++變量初始化規(guī)則就很重要了,下面一起來看看
    2016-08-08
  • Visual Studio 2022 的安裝和創(chuàng)建C++項(xiàng)目(圖文教程)

    Visual Studio 2022 的安裝和創(chuàng)建C++項(xiàng)目(圖文教程)

    本文主要介紹了Visual Studio 2022 的安裝和創(chuàng)建C++項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 一文掌握C語言中的柔性數(shù)組

    一文掌握C語言中的柔性數(shù)組

    柔性數(shù)組在C語言的?C99?標(biāo)準(zhǔn)中,引入的新特性,結(jié)構(gòu)中的最后一個(gè)元素的大小允許是未知的數(shù)組,即為柔性數(shù)組,本文給大家介紹c語言中的柔性數(shù)組,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • C++多線程之互斥鎖與死鎖

    C++多線程之互斥鎖與死鎖

    互斥鎖和死鎖是C++多線程中常見的情況,這篇文章就帶大家進(jìn)一步了解多線程中的互斥鎖與死鎖這兩個(gè)概念,文中的示例代碼介紹得很詳細(xì),快來跟隨小編一起學(xué)習(xí)吧
    2021-12-12
  • C/C++經(jīng)典算法之約瑟夫問題詳解

    C/C++經(jīng)典算法之約瑟夫問題詳解

    這篇文章主要給大家介紹了關(guān)于C/C++經(jīng)典算法之約瑟夫問題的相關(guān)資料,約瑟夫環(huán)問題是一道經(jīng)典的數(shù)據(jù)結(jié)構(gòu)的題目,本文介紹了解決約瑟夫問題的三種方法,需要的朋友可以參考下
    2021-07-07

最新評(píng)論

天等县| 东辽县| 泾阳县| 宁安市| 霍山县| 绥德县| 邓州市| 莒南县| 扶沟县| 安徽省| 若羌县| 岳普湖县| 万源市| 永济市| 平湖市| 鞍山市| 大悟县| 连南| 汾阳市| 金门县| 平凉市| 彰武县| 普定县| 辛集市| 修武县| 诏安县| 响水县| 莱芜市| 阿合奇县| 阿坝县| 微山县| 沙洋县| 清水河县| 长海县| 固原市| 敦煌市| 山阳县| 沁水县| 牟定县| 县级市| 蛟河市|