日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UNIX:缓冲区和重定向

發(fā)布時(shí)間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UNIX:缓冲区和重定向 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

-scanf讀入原則

單字符讀入,跳過空格、制表、換行

-getchar 讀入原則:單字符讀入,讀取每個(gè)字符包括空格制表換行與putchar一起被定義為供預(yù)處理器使用的宏,不是真正意義上的函數(shù)

I/O函數(shù):所有系統(tǒng)都通用的具有可移植性的函數(shù),處理文件輸入、輸出的程序也使用這些函數(shù)

輸入形式分兩種:

-緩沖輸入:按下enter鍵后才能使用輸入的數(shù)據(jù)

-無緩沖輸入:輸入的字符立即被程序使用,多用于游戲中按鍵對(duì)應(yīng)直接的指令。

?

ANSI和C規(guī)定輸入都是緩沖的,但之前K&R時(shí)將輸入類型交與編譯器的編寫者決定

????-conio.h頭文件:

?????????????????????????????????提供支持無緩沖輸入的函數(shù)

??????????????????????????????????例如:

???????????????????????????????????兼容IBM PC的編譯器

???????????????????????????????????回顯無緩沖輸入getche(回顯即輸入的字符直接顯示在顯示器上)

??????????????????????????????????無回顯無緩沖輸入getch

?

?

UNIX系統(tǒng)中

ioctl(UNIX庫函數(shù),非c定義函數(shù))指定待輸入類型,然后使用getchar()完成相應(yīng)操作

ansi c中 用setbuf()和setvbuf()控制緩沖,但因?yàn)橄到y(tǒng)內(nèi)部設(shè)置可能無法使用,所以ANSI沒有可以調(diào)用無緩沖輸入的標(biāo)準(zhǔn)方式

??????????????????????????????????

緩沖區(qū):臨時(shí)儲(chǔ)存區(qū)

-緩存區(qū)存在的意義:

?將若干字符作為一個(gè)快傳遞比單個(gè)傳遞字符更有效率

?可以修改輸入時(shí)的錯(cuò)誤,如沒有緩存區(qū),錯(cuò)誤的數(shù)據(jù)將立即被使用,造成錯(cuò)誤的計(jì)算結(jié)果。

緩沖類型

-完全緩沖I/O:在填滿緩沖區(qū)之后才會(huì)刷新緩沖區(qū),通常用于文件輸入。緩沖區(qū)常見大小為512或4096字節(jié)。

-行緩沖I/O:在讀入換行符后刷新緩沖區(qū)

當(dāng)重定向到文件時(shí),使用全緩沖方式


處理文件

文件為儲(chǔ)存器中儲(chǔ)存信息的區(qū)域。

有些程序涉及處理一些文件,這需要程序去打開,讀取,(甚至為文件讀入新數(shù)據(jù))然后關(guān)閉文件。這些處理文件的步驟可以通過c的庫函數(shù)實(shí)現(xiàn),也可通過主機(jī)操作系統(tǒng)的基本文件工具直接處理文件(這種直接調(diào)用操作系統(tǒng)的函數(shù)叫底層I/O),但是由于操作系統(tǒng)的不同(例如儲(chǔ)存文件方式不同等)文件,無法為底層I/O建立標(biāo)準(zhǔn)庫,還有一種方式就是使用I/O包,創(chuàng)建用于處理文件的標(biāo)準(zhǔn)模型和一套標(biāo)準(zhǔn)I/O函數(shù)

?

流:實(shí)際輸入或輸出映射的理想化數(shù)據(jù)流stdin流表示鍵盤輸入,stdout流表示屏幕輸入,getchar putchar printf scanf都是標(biāo)準(zhǔn)I/O包成員處理這兩個(gè)流

?

判斷文件結(jié)尾

-規(guī)定文件大小,超過字節(jié)將停止錄入

-使用特殊字符標(biāo)記結(jié)尾,Ctrl+Z。

除調(diào)用操作系統(tǒng)判斷結(jié)尾外,c語言中g(shù)etchar函數(shù)通過返回值EOF判斷文件是否到達(dá)結(jié)尾,(getchar如讀入成功返回值在0-255間)

?

重定向

-使用文件方式一:使用特定函數(shù)處理文件

-使用文件方式二:設(shè)計(jì)能與鍵盤和屏幕互動(dòng)的程序,重定向輸入到文件使用getchar獲取內(nèi)容和再從文件輸出

?

c具有重定向特性且能在缺乏重定向特性的系統(tǒng)中模擬重定向。

?

重定向運(yùn)算符

project<text file

-<-將程序和sdin流相連,讀取文本文件中的字符

->-將程序和sdout流相連,輸出文本文件中的字符、

如組合重定向的話,輸出文件名不能和輸入名一樣,重定向運(yùn)算符只能連接程序和文件,不可鏈接文件與文件,程序與程序,不可重定向多個(gè)對(duì)象。

->>-將輸入數(shù)據(jù)添加到文件末尾

-|-將文件的輸出連接到另一個(gè)文件的輸入
?

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的UNIX:缓冲区和重定向的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。