一、scanf()
scanf() #include <cstdio>//c語言中的<stdio.h>就是c 語言中的<cstdio>
我們從鍵盤上讀取的信息都是字符類型(char),而将它們轉換成int類型或者double類型,就是scanf()函數的工作
scanf()函數使用規則:
如果用scanf()讀入基本變量類型的值,在變量名前加一個&
如果用scanf()把字符串讀入字符數組中,不要使用&(其中&為取地址符,故名思意就是用來取變量的存儲地址)
eg1 例如scanf("%d%d",&n,&m);
eg2 例如scanf("%d,%d",&n,&m); scanf()函數将其解釋成:用戶将輸入一個數字、一個逗号,然後再輸入一個數字。也就是說用戶必須像下面這樣輸入兩個整數:88,121
如果一個字符串中包含空格,那scanf()是隻能讀取空格之前的字符,例如“hello world”,scanf("%s",str);隻能讀取到hello。解決這個問題的方法是使用gets。
--------------------------------------------------------------------------------------------------------------------------------------------------------
二、gets()gets() #include<string>
gets可以接收空格,而scanf遇到空格、回車和Tab鍵都會認為輸入結束,所以它不能接收空格。
用法:gets(字符數組名或指針);
char a[15];
gets(a); /*遇到回車認為輸入結束*/
scanf("%s",a); /*遇到空格、回車、Tab鍵認為輸入結束*/
scanf不能接受空格、制表符Tab、回車等;對末尾回車符的處理:把回車符保留在緩存中。
gets能夠接受空格、制表符Tab、回車等;對末尾回車符的處理:接收回車,但把回車替換為\0.
$ gets()和scanf()相同點:字符串接受結束後自動加'\0'。
$ gets()和scanf()不同點:scanf() :當遇到回車,空格和tab鍵會自動在字符串後面添加'\0',但是回車,空格和tab鍵仍會留在輸入的緩沖區中。
gets():可接受回車鍵之前輸入的所有字符,并用'\0'替代'\n' .回車鍵不會留在輸入緩沖區中
scanf()可以讀取所有類型的變量
gets()用到讀取字符串,用回車結束輸入
三、getline()
getline() #include <string>
istream& getline ( istream &is , string &str , char delim )
其中,istream&is表示一個輸入流,譬如cin;
string&str表示把從輸入流讀入的字符串存放在這個字符串中(可以自己随便命名,str什麼的都可以);
char delim表示遇到這個字符停止讀入,在不設置的情況下系統默認該字符為'\n',也就是回車換行符(遇到回車停止讀入)。
eg1: getline(cin,line,'#');
那麼當我輸入"You are the #best!" 的時候,輸入流實際上隻讀入了"You are the ",#後面的并沒有存放到line中(應該是在緩沖區裡吧)。
eg2: while(getline(cin,line))語句 注意這裡默認回車符停止讀入,鍵入Ctrl Z按回車即可退出循環。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
四、cin.getline()cin.getline() #include<iostream>
此函數會一次讀取多個字符(包括空白字符)可以接受空格 它以指定的地址為存放第一個讀取的字符的位置,依次向後存放讀取的字符,直到讀滿N-1個,或者遇到指定的結束符為止。
若不指定結束符,則默認結束符為'\n'。
其語法為: cin.getline(字符指針(char*),字符個數N(int),結束符(char));
五、cin.get()
六、getchar()
getchar() //接受一個字符,需包含#include<cstdio>
getchar()是C語言的函數,C 也可以兼容,但是盡量不用或少用;
getchar()的返回值是用戶輸入的字符的ASCⅡ碼,如出錯返回-1
另外想要成為一個優秀的、有能力程序員,做軟件開發的話,就來學習C/C 吧,而且學習編程的話有一個學習的氛圍跟交流圈子特别重要!想加入筆者的學習圈的話可以關注加私信筆者【編程交流】可以領取相關資料哦!不管你是大牛還是小白,大家都一起成長進步。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!