程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C輸入緩沖與重定向,C輸入緩沖重定向

C輸入緩沖與重定向,C輸入緩沖重定向

編輯:關於C語言

C輸入緩沖與重定向,C輸入緩沖重定向


輸入緩沖:

先來看一個回顯小程序echo,它把用戶輸入的字符顯示到屏幕上

//echo.c
#include<stdio.h> int main() { int ch; while((ch=getchar())!=EOF) { putchar(ch); } }

運行結果如下(按ctrl+d 退出循環,程序結束)

這個程序在不同系統上還有一個可能的結果是

hheelloo

這一般是例外情況,在大多數系統上,在按下回車之前什麼都不會發生,正如第一種結果所示。

輸入字符立即回顯非緩沖(unbuffered)直接(direct)輸入的一種實例,它表示輸入的字符對正在等待的程序立即變為可用。

反之,延遲回顯的是緩沖(buffered)輸入的實例,這種情況下所輸入的字符被收集並存儲在一個被稱為緩沖區(buffer)的臨時存儲區域當中,當按下回車時所輸入的字符塊對程序變為可用,於是便一起顯示到了屏幕上。

緩沖區的作用:

  1.將若干個字符作為一個塊傳輸比逐個發送這些字符的耗時少

  2.如果輸入有誤,可用使用delete鍵進行修改

非緩沖輸入的適用性:一些交互式程序,希望按下鍵就執行某個命令

 

緩沖又可以分為兩類:

  完全緩沖I/O:緩沖區滿時被清空(內容被發送至其他目的地),這類緩沖通常出現在文件輸入中

  行緩沖I/O:遇到換行符時清空緩沖區,鍵盤是標准的行緩沖,按下回車鍵將清空緩沖區

 

重定向:

  默認情況下使用標准IO包的C程序將標准輸入作為其輸入流,這個流是作為向計算機中讀取數據的常規方式建立的,現在一般是我們的鍵盤。同理標准輸出流一般是我們的顯示器。

  然而我們可以將標准輸入輸出流重定向分配至文件

 

  現在用mywords文件(隨便建的一個文件,輸入了一些字符)代替鍵盤作為我們的輸入使用echo

  

  果然echo程序把mywords中的內容顯示出來了

  <符號是Unix、Linux、DOS的重定向運算符,該運算符把mywords文件和標准輸入流關聯了起來,將該文件的內容引導至echo程序。

  同理也可以使用>符號實現輸出流重定向到文件

  

  可以看到程序把我們從鍵盤輸入的字符串輸出到了myword當中,而不是回顯在屏幕上了

 

 

參考:C primer plus

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved