c語言流
『壹』 c語言中stdin流的用法是什麼
C語言中stdin流的用法:
stdin是C語言中標准輸入流,一般用於獲取鍵盤輸入到緩沖區里的東西。
訪問stdin,可用stdio.h中提供的以下幾個函數:
(1)scanf、getchar來從stdin流中獲取指定的數據。scanf根據第一個參數指定的格式符將數據讀入後續參數指定的內存位置中;getchar從stdin流中讀取一個字元並返回。
(2)可以使用一般的訪問輸入流的函數來訪問stdin,比如:fscanf、fgetc,使用方法和scanf、getchar類似,只是多了一個參數指定文件流。當然,scanf和getchar的具體實現就是通過調用fscanf和fgetc,這樣可以提高代碼利用率。
(3)可以用fflush和rewind這兩個函數來刷新stdin,來清空緩沖區中已有的內容,不過這種方法不是標准方法,當stdin被重定向到文件時,這會導致指針重新指向文件開頭。
『貳』 C語言中的流
流么就是流派的意思,就像你打游戲(比如魔獸爭霸),就有滑鼠流,鍵盤流。滑鼠流:擅長用滑鼠操作的;鍵盤流:擅長用鍵盤操作的;
流最明顯的就是輸入流和輸出流,輸入流(如scanf,getchar等):用於輸入的;輸出流(printf,putchar等):用於輸出的。
『叄』 C語言「流」是什麼概念
首先理解流的意思,可以想像水從水管里出來,這就是一股水流。
然後,c語言中流動的不再是水,而是有順序的,有排列結構的數據。比如100001111100001(二進制)
C里的文件流,C里標准文件方式把文件當作流來看,也就是有一個內部緩沖buffer(在C庫內部建立,一般為512B),每次以標准方式打開文件時,讀入時先將數據讀到這個緩沖區里,寫的時候也是先寫入緩沖區里。
C里標准輸入就是stdin,標准輸出就是stdout,C對鍵盤輸入(比如scanf)和屏幕輸出(比如printf)的行緩沖機制就是建立在這些文件的流機制上的。
有時候比如scanf輸入整數時,最後一個回車就會留在流的buffer里。如果下次時你讀字元的話就會把它讀入。這就是為什麼有些C實現允許你用fflush(stdin)來清除輸入緩沖,不過C標准只定義了對普通文件和stdout等輸出流的fflush行為。因為按理說fflush刷新緩沖不應該丟棄輸入的。
『肆』 C語言中流是什麼意思
C語言的I/O系統為用戶提供了一個介面,該介面與實際的存取設備無關。只是設備的一個抽象表示形式。這個抽象的介面稱為流,實際的設備稱為文件。
C文件系統可以與各種設備一起使用,如列印機、硬碟、終端等,緩沖文件系統可以將每個設備轉換成邏輯設備,即所謂的流。所有的流工作方式類似,所以很容易操作不同的設備。流有2種類型:文本流和二進制流。
文本流是一系列字元,可以由多行構成,每行由一個換行符終止。
二進制流是一系列位元組,並與外部設備上的位元組一一對應。
『伍』 C語言中流指什麼,不要復制,用自己的理解解釋一下,感謝了
版本四
流 原從stream翻譯來。
什麼電腦外設控制,磁碟文件輸入輸出,只要是輸入或者輸出所產生的數據都是流。
從linux對於硬體設備的控制很容易看出,對於硬體和磁碟上的文件,C語言的操作方法基本上一樣。linux中C語言也是把硬體當做文件進行操作。(本質上,它把外設與txt文本文件看成一類東西。)流的概念的提出,我認為是為了程序對於文本和硬體的一系列操作而設定的統一標准。從程序員角度來看,就不需要知道各個操作的細節,編程的時候,統一把外設都當成文件進行操作就OK了。比如對於音效卡,先OPEN打開,然後write寫入,就完成喇叭發聲,然後close關閉。和對於文本操作基本一樣。
不管對設備或是文件(廣義上都是文件)的輸入輸出操作,而產生的數據,都是I/O流。而C語言中的I/O流能分為兩種:文本流,二進制流。很容易看出文本流控制很二進制流控制的區別。你用TC,fopen打開一個MP3或者別的32位文件,然後讀取,會發現用文本流打開後,文件只能讀到開頭一點點。因為32位音樂文件有很多的'00'數據,文本流會把它當做文件結束符而結束讀取。而二進制流打開方式則可以從頭讀到尾。(這時候輸出的時候可能存在點問題,實驗的時候可以用二進制 流方式再寫入到另外一個文件來觀察。)
流是由輸入輸出產生的,是用於數據交換或轉換的統一的標准(特指這一類的數據)。C++和一些編程語言中定義的流(stream)類,就是對這類數據的定義。並通過成員函數對「流」進行操作。這樣,用戶和程序,程序和外設之間都是通過「流」進行交互。而程序員不需要知道「流」的底層到底是怎麼實現的。 就好像吃飯和排泄。數據流中定義了,先牙齒咀嚼,然後胃部消化,然後小腸吸收,然後大腸發酵,然後你懂的。你只需要CIN,還有COUT,就能控制吃喝拉撒。你管它是細嚼還是狼吞?你管它便秘還是拉肚子?吞吐量是電腦性能的事。你管它是先進小腸還是先進胃?底層是內核的事。你只需要擁有了CIN和COUT,你就擁有了一切。
從廣義上來說,流也是文件,不同於txt文本類的文件(流屬於數據,數據等同於文件)。你可以對流進行各種操作。緩沖區的定義,也是為了對流的操作。
綜上,我們知道了,流是數據,流是標准,流是文件。流的作用我們知道了,那麼「流」到底是個什麼玩意呢?非常同意 448634095 所說的。用著用著自己就知道是什麼玩意了。就好像剛開始學編程 鬧不明白函數 是個啥意思,和數學上的函數一點也不一樣。你現在知道整形是什麼了吧?你能不能給我舉個簡單的列子給我解釋下整形是什麼?
注意:流和 輸入輸出的緩沖區是兩個概念。
『陸』 C語言中的 輸入流 是什麼意思
首先,你要明白什麼是「流」。直觀地講,流就像水一樣,不存在大小問題,也避免了完整性問題。非流的數據傳輸,比如你下載一張圖片,需要整幅圖片下載完之後才能使用,而流則不同,就像水,你取一杯也可以用,取一桶也可以用。所以說,流是一種數據傳輸的模式。
而輸入流和輸出流,差別在於出和入,是相對於程序而言的。「輸入流式得到數據,輸出流是輸出數據」,這種說法是對的。你把問題想復雜了,輸入是程序得到外部數據,輸出是程序向外部傳輸數據,二者沒有必然的聯系,都是流,差別是方向不同,也就是說,程序可以只有輸入流而沒有輸出流,或者只有輸出流而沒有輸入流。
另外補充一下,流的好處是接收方可以提前處理,縮短等待時間,提高速度。比如你上youku看視頻,並不是整個視頻下載好了才播放的,而是下一點播一點。但是不是所有應用都適合,比如加密了的文件,往往需要整個加密文件接收完了才能解密。
『柒』 淺談c語言輸入輸出流格式
printf格式輸出函數,作用是向終端輸出若干個任意類型的數據
一般格式為printf(「格式控制」,輸出表列)
例printf(「%d,%c\n」,i,c)
格式控製作用:
1. 格式說明(%..):將輸出的數據轉換為指定的格式輸出
2. 普通字元。按原樣輸出
格式控制中的普通字元按原樣輸出
例printf(「%d %d」,a,b)
printf(「a=%d b=%d」,a,b)
在第二個函數中雙引號內的字元,除了兩個%d以外,其他的普通字元按原樣輸出,如果a,b的值分別為3,4,則輸出為a=3 b=4中間有空格
3. 格式字元:
1 d格式符。%d按十進制整數數據實際長度輸出;%md指定寬度(位數)m,如果數據位數小於m,則左端補空格;%ld長整型數據
2 o格式符。以八進制整數形式輸出
3 x格式符。以十六進制數形式輸出
4 u格式符。以十進制整數形式輸出無符號數
5 c格式符。用來輸出一個字元,一個整數,只要它的值在0~255之間,也可以用%c使之按字元形式輸出,在輸出前,系統會將該整數作為ASCII碼轉換成相應的字元;反之,一個字元數據也可以用整數形式輸出。
6 s格式符。用來輸出一個字元串。%s;%ms,輸出的字元串佔m列,如果字元串本身長度大於m,則突破m限制,將字元串全部輸出,如果小於m,則左補空格;%-ms,如果串長小於m,則在m列范圍內,字元串向左靠,右補空格;%m.ns,輸出m列,但只取字元串左端n個字元。這n個字元輸出在m列右側,左補空格;%-m.ns,取n個字元輸出在m列范圍的左側,右補空格,如果n>m,則m自動取n值,即保證n個字元正常輸出
7 f格式符。用來輸出實數(包括單雙精度),以小數形式輸出。%f,不指定欄位寬度,使整數部分全部輸出,並輸出6位小數。但注意,在輸出的數字中並非全部數字都是有效數字,單精度實數的有效數字一般為7位;%m.nf,指定輸出的數據共佔m列,其中有n位小數。如果數值長度小於m,則左端補空格;%-m.nf與%m.nf基本相同,只是使輸出的數值向左端靠,右端補空格。
8 e格式符。以指數形式輸出實數
9 g格式符。用來輸出實數,根據數值的大小,自動選f格式或者e格式,且不輸出無意義的零。P80
格式字元
說明
d ,i
以帶符號的十進制形式輸出整數
O
以八進制無符號形式輸出整數
X,x
以十六進制無符號形式輸出整數,用x則百偶是輸出十六進制數的a~f時以小寫形式輸出。用X時,則以大寫字母輸出
u
以無符號十進制形式輸出整數
c
以字元形式輸出,只輸出一個字元
s
輸出字元創
f
以小數形式輸出單雙精度數,隱含輸出7位小數
e,E
以指數形式輸出是說,用e時指數以e表示,用E時指數以E表示
g,G
選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0.用G時,若以指數形式輸出,則指數以大寫表示
字元
說明
l
用於長整型整數,可載入個師傅d,o,x,u前面
m
數據最小寬度
n
對實數,表示輸出n位小數,對字元串,表示截取的字元個數
-
輸出的數字或字元在域內向左靠
注意:除了X,E,G外,其他格式字元必須用小寫字母;可以在格式控制字元串內包含轉義字元;格式符之間可以加入修飾符;用連續兩個%來輸出%
scanf(格式控制,地址表列)
scanf(「%d%d%d」,&a,&b,&c)
&為地址運算符,&a指a在內存中的地址。
1.用%d%d%d輸入數據時不能用逗號做兩個數據間的分隔符可用空格
如果%d和%d之間有n個空格,則輸入時對應的位置應該有多於n個空格來分隔
總之,%d與%d之間有什麼簡單符號,輸入信息時候就要將這些符號加上,或者格式控制里是a=%d,則輸入數據時候也得輸入a=某個數據
2.用%c格式輸入字元時候,空格字元和轉義字元都作為有效字元輸入
例如:scanf(「%c%c%c」,&c1,&c2,&c3);若輸入「a空格b空格c」則c1為a,c2為空格,c3為b,正確的輸入法為「abc」字元間沒有空格
3.在輸入數據時候,遇到以下情況時,認為該數據結束①遇空格,或按回車,或跳格鍵;②指定寬度結束,如%3d;③遇非法輸入
『捌』 c語言中什麼是流
流是程序輸入或輸出的一個連續的位元組序列,設備(例如滑鼠、鍵盤、磁碟、屏幕、數據機和列印機)的輸入和輸出都是用流來處理的。在C語言中,所有的流均以文件的形式出現----不一定是物理磁碟文件,還可以是對應於某個輸入/輸出源的邏輯文件。
『玖』 c語言中流的知識點
這個一時半會不是很好解釋,可以去看看關於套接字傳輸的知識,不過看之前先把IO,進程,線程,管道,信號以及TCP ,UDP協議看看哦,別人告訴你再多,其實還不如你自己去看去學來的好,哪怕慢一點,也是沒關系的,學習在於堅持而不在於你學的多快多。