字串的輸入輸出函式總結

2021-08-10 05:07:49 字數 2174 閱讀 2531

字元資料的輸入輸出

1.putchar 函式(字元輸出函式)

putchar 函式是字元輸出函式, 其功能是在顯示器上輸出單個字元。其一般形式為:putchar(字元變數).

2.getchar函式(鍵盤輸入函式)

getchar函式的功能是從鍵盤上輸入乙個字元。其一般形式為:getchar();通常把輸入的字元賦予乙個字元變數,構成賦值語句,如:char c;  c=getchar()。

3.scanf("%c",&s)

讀取單個字元,前導空白字元並不跳過,字元後面不會新增nul位元組。

需要注意的一點是getchar()函式的返回值為整數 例:

#include

main()

getchar()函式一般情況下返回的是標準輸入檔案中的下乙個字元,當沒有輸入時返回eof(乙個在標頭檔案stdio.h中被定義的值,不同於任何字元)。程式中變數c被定義為char型,這意味著c無法容下所有可能的字元,特別是eof。程式的結果要麼取的是截斷的c,要麼取不到eof,程式陷入死迴圈。

字串的輸入

1.gets()

gets() (代表get string),使用位址作為引數,它從系統的標準輸入裝置(通常是鍵盤)獲得乙個字串,直到遇到乙個換行符(\n)結束,並

自動新增空字元(\0)。

例:char name[81]; /*分配空間*/

printf("hi ,what is your name?");

gets(name);

printf("%s\n",name);

返回值:如果讀入正常,則返回的是讀入字串的位址(即乙個指向char型的指標),如果出錯或gets()遇到檔案結尾,則返回乙個空(或0)位址。這個空位址被稱為空指標,並用stdio.h裡定義的常量null來表示。

因此gets()中還加入了一些錯誤檢測,這是它可以很方便的以如下形式使用:

while(gets(name) != null)

這樣的指令使您既可以檢查是否到了檔案結尾,有可以讀取乙個值。如果遇到了檔案結尾,name中什麼也不會讀入。

2.fgets()

gets()的乙個不足時它不檢查預留儲存區是否能夠容納時間輸入的資料。多出來的字元簡單的演繹出到相鄰的記憶體區。fgets()函式改進了這個問題,它讓您指定最大讀入字元數。fgets()和gets()有三個方面不同:

(1)需要第二個引數來說明最大讀入字元數。如果這個引數值為n,fgets()就會讀取最多n-1個字元或者讀完乙個換行符為止,有這兩者中最先滿足的那個來結束輸入。

(2)如果fgets()讀到換行符,就會把它存到字串裡,而不是像gets()那樣丟棄它。

(3)它還需要第三個引數來說明讀哪乙個檔案。從鍵盤上讀資料時,可以使用stdin作為該引數,這個識別符號在stdio.h中定義。

例:char name[81];

char *ptr;

ptr = fgets(name,81,stdin);

printf("%s",ptr);

3.scanf()函式

scanf()函式使用%s格式讀入乙個字串。scanf()使用兩種方法決定輸入結束。無論那種方法,字串都是以遇到的第乙個非空白字元開始。如果使用%s格式,字串讀到(但不包含)下乙個空白字元(空格,製表符或換行符)。如果指定了字段寬度,比如%10s,scanf()會讀入10個字元或知道遇到第乙個空白字元,由二者中最先滿足的哪乙個終止輸入。

scanf()函式返回乙個整數值,這個值是成功讀取的專案數;或者當遇到檔案結束時返回eof。

4.while((s[i++]=getchar())!='\n');

s[i-1] = '\0';

字串的輸出:puts(),fputs(),printf()

1.puts()函式

puts()函式使用很簡單,只需要給出字串引數的位址。

例:char *name = "hellow wold";

puts(name);

puts()函式顯示字串時自動新增乙個換行符。puts()輸出時遇到空字元(\0)停止,所以應確保輸出的字串中有空字元。

2.fputs()函式

fputs()函式是gets()的面向檔案版本。兩者之間的主要區別:

fputs()需要兩個引數來說明要寫的檔案。可以使用stdout作為引數來進行那個輸出顯示,stdout在stdio.h中定義

與puts()不同,fputs()並不為輸出自動新增換行符。

字串輸入輸出函式

while gets name null 可檢查檔案是否結尾 while ch getchar eof gets 讀取換行符並將其丟棄,fgets 把換行符存字串裡,但每次顯示字串會顯示換行符 不足之處 fgets 是為檔案i o而設計得,在處理鍵盤輸入時就不如gets 那麼方便。它需要第二個引數來...

字串輸入輸出函式

字串輸入首先要考慮的是儲存位置和儲存空間大小。例子 char name scanf s name 指標未初始化,可能指向記憶體中的任意地方,字串讀入的時候有可能覆蓋記憶體中的關鍵資料,造成程式或機器崩潰。char name 81 這種方式顯式宣告空間並進行初始化。scanf s str 函式讀入單個...

字串的輸入 輸出總結(陣列字串)

char str maxn maxn為常量char型別陣列宣告字串必須給出其大小,之後大小固定。cin和scanf 都是遇到 空格 tab 回車 結束,即一次讀取乙個單詞。include scanf s str include cin str cin.get str size 遇到回車或讀滿 siz...