1. 程式人生 > >C語言自學完備手冊(22)——輸入輸出

C語言自學完備手冊(22)——輸入輸出

版權宣告

輸入輸出函式概述

之前我們學習了利用函式putchar( )實現對於單個字元的輸出。既然有輸出那麼就有與之對應的輸入函式即getchar( ),利用該函式可以實現對於單個字元的輸入。

EOF概述

在瞭解了輸入與輸出函式之後,我們來考慮一種應用場景:在控制檯顯示使用者輸入的字元。換言之,需要將標準輸入的資料複製到標準輸出。那麼,有個問題——怎麼樣判斷使用者輸入結束呢?這裡就要用到EOF了。 EOF是End Of File的縮寫,它是一個物件式巨集;在<stdio.h>標頭檔案中EOF被定義為負數(通常為-1,具體值有編譯器和執行環境決定)。當getchar( )函式讀到資料末尾或者發生錯誤時返回EOF。程式碼如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int ch;
    while((ch=getchar())!=EOF){
        putchar(ch);
    }
    return 0;
}

在該示例中核心程式碼就是一個while迴圈,將輸入資料不斷地輸出顯示,直到資料的末尾(即讀到EOF為止)。看到這些程式碼,熟悉Java的小夥伴或許猛地一下就想到了Java當中的IO流操作:

public static void testCopy() throws IOException {
		 InputStreamReader isr=new InputStreamReader(new FileInputStream("e:\\test.txt"), "gbk");
		 OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("e:\\copy.txt"), "gbk");
		 int data=0;
		 while((data=isr.read())!=-1) {
			 osw.write(data);
		 }
		 isr.close();
		 osw.close();
	}

核心部分太相似了,如遇故人。只不過在Java中明確使用了-1表示讀到資料末尾,在C中採用的是EOF罷了。