流IO和檔案IO的簡單使用

2021-08-18 23:13:52 字數 2483 閱讀 9197

流檔案io

(fopen....

)是標準

io,包含在

stdio.h

中,可移植性強,使用的是檔案指標

而檔案io

(open...

)可移植性低,包含在

fcntl.h

中,使用的是乙個整形的檔案描述符

標準io/流io

下面這個程式是用流來讀寫檔案的,從終端輸入,重複100

遍的輸入檔案中,再讀出來列印至螢幕上

#include

int main()

file *fp;

char a[100];

char b[100];

int c=100;

fp=fopen("ckx","w+");

fgets(a,sizeof(a)-1,stdin);

while(c-->0)

fwrite(a,1,strlen(a),fp);//或者fputs(a,fp);   

fseek(fp,0,seek_set);

while(fread(b,1,sizeof(b),fp)>0)

fputs(b,stdout);

fclose(fp);

return 0;

file *fp為開啟流返回的檔案指標

file * fopen(const char * path, const char * mode);//開啟流

mode字串看下表,常用追加

a+,清空並讀寫

char *fgets(char *buf, int bufsize, file *stream);//行輸入函式

buf為字串,

bufsize

為讀取資料的大小,

stream

為檔案流,如果從終端輸入則為

stdin

fgets函式最後一位必須為』\0』

int fputs(const char *str, file *stream);//行輸出函式

如果輸出到終端,則為stdout

size_t fread(void *restrict ptr,size_t size,size_t nobj,file * restrict fp);//二進位制讀

ptr為陣列,

size

為讀的單位大小(如果為

char

,設為1

),nobj

為讀多少個單位

size_t fwrite(const void *restrict ptr,size_t size,size_t nobj,file * restrict fp);//二進位制寫

同fread

int fseek(file *fp,long offset,int whence);//定位流

whence引數

seek_set代表從檔案的起始位置開始,

offset>=0

seek_cur表示從當前位置開始

,offset

可正可負

seek_end表示從檔案末尾開始

,offset

可正可負

檔案io

#include

#include

int main()

int fd,c=100;

char a[100],b[100];

scanf("%s",a);

while(c-->0)

write(fd,a,strlen(a));

lseek(fd,0,seek_set);

while(read(fd,b,sizeof(b))>0)

//      fputs(b,stdout);

printf("%s",b);

close(fd);

return 0;

int open(constchar*pathname,intflags,mode_tmode);

o_rdonly唯讀模式

o_wronly只寫模式

o_rdwr讀寫模式

開啟/建立檔案時,至少得使用上述三個常量中的乙個。以下常量是選用的:

o_creat如果指定檔案不存在,則建立這個檔案

o_excl如果要建立的檔案已存在,則返回

-1,並且修改

errno

的值o_trunc如果檔案存在,並且以只寫

/讀寫方式開啟,則清空檔案全部內容

(即將其長度截短為

0)o_noctty如果路徑名指向終端裝置,不要把這個裝置用作控制終端。

o_nonblock如果路徑名指向

fifo/

塊檔案/

字元檔案,則把檔案的開啟和後繼

i/

標準IO和檔案IO解析

一.架構圖 二.標準io 1.標準io簡介 2.標準io緩衝 3.如何理解快取型別 要理解標準io快取,得理解file檔案指標 struct io file結構體 標準io介面操作的是file檔案指標,file檔案指標定義了很多變數,包括讀寫緩衝區指標以及緩衝區型別標誌。我們可以通過setvbuf函...

標準IO和檔案IO區別

先來了解下什麼是標準 以及檔案 標準 標準i o是ansi c建立的乙個標準i o模型,是乙個標準函式包和stdio.h標頭檔案中的定義,具有一定的可移植性。標準io庫處理很多細節。例如快取分配,以優化長度執行io等。標準的io提供了三種型別的快取。1 全快取 當填滿標準io快取後才進行實際的io操...

IO流5 IO流 緩衝流的使用

bufferedinputstream bufferedoutputstream bufferedreader bufferedwriter 提供流的讀取 寫入的速度 提高讀寫速度的原因 內部提供了緩衝區 實現非文字檔案的複製 test public void testbufferedstream ...