putchar ():把變數中的乙個字元常量輸出到顯示器螢幕上;
getchar ();從鍵盤上輸入乙個字元常量,此常量就是該函式的值;
printf ();把鍵盤中的各類資料,加以格式控制輸出到顯示器螢幕上;
scanf ();從鍵盤上輸入各類資料,並存放到程式變數中;
puts ():把陣列變數中的乙個字串常量輸出到顯示器螢幕上;
gets ():從鍵盤上輸入乙個字串常量並放到程式的陣列中.
sscanf(); 從乙個字串中提取各類資料。
putchar() 輸出乙個字元
getchar() 輸入流中獲取乙個字元
例如:char c = getchar();
putchar(c);
格式化輸入輸出scanf()和printf()是最有用的,所以重點講一下。
printf():
一般形式:
printf("格式控制".輸出列表);
eg : printf("a=%d,b=%f,c=%c\n",a,b,c);
1;格式控制.
格式控制是用雙引號括起來的字串,也稱"轉換控制字串",它包含以下兩部分資訊.
格式說明:由"%"和格式字元組成,如%d,%f,%c,他的作用是把輸出資料轉換為指定格式輸出,格式的說明總是由"%"字元開始的.
普通字元:需要原樣輸出的字元,或者是一些有特殊含義的字元,如\n,\t。
2;輸出列表
就是需要輸出的一些資料,也可以是表示式,如果在函式中需要輸出多個變數或表示式,則要用逗號隔開.
一些特殊字元的輸出:
單引號,雙引號,和反斜槓的輸出在前面加轉義字元」\」
如:」\』」, 「\」」 , 「\\」
%的輸出用兩個連在一起的%%,即printf(「%%」);
常用的格式說明如下:
格式字元
d 以十進位制形式輸出帶符號整數(正數不輸出符號)
o 以八進位制形式輸出無符號整數(不輸出字首o)
x 以十六進製制形式輸出無符號整數(不輸出字首ox)
u 以十進位制形式輸出無符號整數
f 以小數形式輸出單精度實數
lf 以小數形式輸出雙精度實數
e 以指數形式輸出單、雙精度實數
g 以%f%e中較短的輸出寬度輸出單、雙精度實數
c 輸出單個字元
s 輸出字串scanf(「%s」,ss)//不需要&;
這裡強調一下:網上很多文章都說f 和lf是一樣的,即不管單精度,雙精度浮點數,都可以用f,但我在poj上做過測試,輸出double時用f確實也可以,但讀入時,用f就報wa,所以大家如果對double進行讀寫的話,都用lf吧。
說到double,再囉嗦一句,建議大家要用到浮點數時都用double,不要用float,因為在很多情況下,float精度不夠會導致wa。
特殊:對64位整數的輸入輸出,在poj上的c++環境下(即vc),64位整數是:
__int64 (注意int前面是兩個下劃線)
輸入輸出格式為」%i64d」.
在g++環境下(即dev c++) 64位整數是
longlong
輸入輸出格式為」%lld」.
輸出寬度
用十進位制整數來表示輸出的最少位數。 注意若實際位數多於定義的寬度,則按實際位數輸出,若實際位數少於定義的寬度則補以空格或0。 精度
精度格式符以「.」開頭,後跟十進位制整數。意義是:如果輸出數字,則表示小數的位數;如果輸出的是字元,則表示輸出字元的個數;若實際位數大於所定義的精度數,則截去超過的部分。
標誌格式字元
- 結果左對齊,右邊填空格
+ 輸出符號(正號或負號)空格輸出值為正時冠以空格,為負時冠以負號
例如:double c=24212345.24232;
printf(「%020.4」); 表示輸出精確到小數點後4位,輸出佔20位,若有空餘的位補0.
scanf:
scanf的很多用法都是和printf對應的,故不再贅述。
說一下scanf乙個特別好用的地方,就是可以濾去一些不想要的東西。
舉例說明如下:
比如輸入為日期 yyyy-mm-dd,就可以這樣寫:
intyear,moth,day;
scanf(「%d-%d-%d」,&year,&moth,&day);
再比如:
scanf("%3d%*3d %2d",&m,&n); 輸入113 118 69回車(系統將113賦予m,將69賦予n,因為*號表示跳過它相應的資料所以118不賦予任何變數)
puts()用的不多,且基本都能用printf()代替,故不再多說。
gets()是從輸入流中獲取一行字串放入字元陣列中:
char in[100];
gets(in);
大家可能最容易出錯的地方就是字串的輸入,所以強調一下:
能進行字元,字串輸入的有:
getchar(), scanf(「%c」);scanf(「%s」), gets()
其中getchar() 和 scanf(「%c」)的功能是一樣的。
需要注意的是,這兩個函式讀入的是輸入流中當前位置的字元,
比如:scanf(「%d」,&n);
c = getchar();
假設輸入 67/(假設「/」代表回車),則第乙個scanf讀入乙個整數67後,當前輸入流的位置是67之後,即指向回車符,所以第二個getchar()讀入的就是乙個回車符了,即 c = 『\n』。
同樣,gets()也是從當前位置讀入一行字串。
比如:scanf(「%d」,&n);
gets(str);
此時讀入字元陣列中的字串就是「\n」 了
所以通常在用scanf讀入乙個非字串的型別之後,如果要讀入字元,或字元陣列,都用乙個額外的getchar()把回車符讀掉,若後面跟的不止乙個回車符,可能還有多餘的空格的話,就用gets()讀掉。
和以上不同的是,scanf(「%s」) 讀入的時候是會忽略掉空格,回車和製表符的。並且以空格,回車和製表符作為字串結束的標誌。
經常會有這樣的題,輸入第一行是乙個整數,接下來每行的第乙個是乙個字元,用來表示某種操作,後面再跟一些資料,比如:
4a 100 2
b 23
a 23 89
b 34
像這種輸入就需要小心,讀入字元時不要讀成回車符。
為了防止意外,我一般是這樣處理這類輸入的:
charmodel[2];
scanf(「%d」,&n);
for(…,…,…)
else}
對於c++的輸入輸出就不再詳細的講了,因為cin,cout的速度實在太慢,不推薦使用,我一般都是到萬不得已時才用。
比如當你要讀入字串到string 物件中時,就只能用cin了,這時候還有乙個常見的問題,就是如何將一整行字串讀入乙個string 中,這就要用到getline函式了。
用法為:
getline(cin, str);
第乙個引數就是標準輸入流cin ,第二個引數是接收讀入資料的string物件,本來還有第三個引數,是結束符的標誌,但通常用它預設的就可以了,所以不用管。
用string的成員方法length()或者size()都可以取得字串長度:
#include #include using namespace std;
int main()
二者沒有本質的區別,大部分情況都可以互換使用。但是表示的意義略有不同。
length()比較直觀,表示的就是該字串的長度。
size()表示的是string這個容器中的元素個數。如果使用過std::vector之類的容器的話,可以把string看做是乙個vector(這裡只是舉例,並不能等價), char就是這個容器的元素型別。那麼size()表示的就是這個vector(容器)中char的個數。
注意區分這個getline和cin.getline的區別:
cin.getline的用法如下:
char str[20];
cin.getline(str,20); 表示從讀入的一行字串中,取最多20各字元放入字元陣列str中,注意此處的str是字元陣列,而上面的str是string物件。
另外需要注意的是,千萬不要把cout和printf混用,因為cout是帶緩衝的而printf不帶,所以會使得輸出的資料順序混亂。
C語言檔案輸入輸出總結
檔案輸入輸出 1 fopen include file fopen const char fname,const char mode mode方式 r 開啟乙個檔案,可以讀取檔案。w 開啟乙個檔案,可以寫入檔案,先將檔案的長度截為零。如果該檔案不存在則先建立之。a 開啟乙個檔案,可以寫入檔案,向已有...
C語言輸入輸出用法總結
二 輸入 三 關於緩衝區的一些總結 名稱用法 putchar 只能輸出單個字元 puts 只能輸出字串,並且輸出結束後會自動換行 printf 可以輸出各種型別的資料 對於printf 函式的格式控制符完整形式如下 flag width precision type tpye表示輸出型別,比如 d ...
C語言 輸入輸出相關總結
複習c語言,將以前對輸入輸出的總結筆記轉到網上,以便以後查閱。其中一些例子是取自印度大佬編寫的名為c語言教程,解決了許多疑惑。不得不說印度編寫的教 的棒。getchar 可以接受鍵入的任何值,包括製表符和回車鍵 int main int argc,char ar int main int argc,...