流檔案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 ...