1. 程式人生 > >字串的輸入輸出函式總結

字串的輸入輸出函式總結

字元資料的輸入輸出
1.putchar 函式(字元輸出函式)
        putchar 函式是字元輸出函式, 其功能是在顯示器上輸出單個字元。其一般形式為:putchar(字元變數).
2.getchar函式(鍵盤輸入函式)
        getchar函式的功能是從鍵盤上輸入一個字元。其一般形式為:getchar();通常把輸入的字元賦予一個字元變數,構成賦值語句,如:char c;  c=getchar()。

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

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

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

例:

#include<stdio.h>

main()

{

    char c;

    while((c=getchar())!=EOF)

    putchar(c);

}

        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()並不為輸出自動新增換行符。