C語言自學完備手冊(22)——輸入輸出
阿新 • • 發佈:2018-12-12
版權宣告
輸入輸出函式概述
之前我們學習了利用函式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罷了。