基於檔案io的檔案拷貝程式
標準io
fclose函式
fread函式
fwrite函式
基於標準io的檔案拷貝程式
這次學的主要是linux系統下c語言的io程式設計
open函式的定義如下:
int open(const char * pathname, int flags);
int open(const char * pathname, int flags, mode_t mode);
其中返回值為檔案描述符,如果開啟失敗則返回-1
第乙個引數pathname是字串,輸入開啟檔案的路徑
第二個引數flags是標誌位,多個組合用 | 隔開
第三個引數mode,在用creat標誌的時候要寫上許可權
感覺上能用標誌的如下:
標誌含義
o_rdonly
唯讀o_wronly
只寫o_rdwr
讀寫寫入時在後面追加
o_creat
若不存在則建立
······
close函式的定義如下:
int close(int fd);
使用方法很簡單,返回值0表示成功,返回-1表示失敗。
fd是之前open()的返回值,表示關閉開啟的某檔案。
和open()成對使用
定義:
ssize_t read(int filedes, void *buf, size_t nbytes);
返回值表示讀到的大小,如果是-1表示失敗
第乙個引數filedes是open返回的檔案描述符
第二個引數表示要讀到的快取區
第三個引數表示讀取的長度
定義:
ssize_t write(int filedes, const void *buf, size_t nbytes);
與read類似:
返回值表示寫入的大小,-1表示失敗
第乙個引數是open返回的檔案描述符
第二個引數是寫入的快取區
第三個是寫入的位元組數
#include
"stdio.h"
#include
"unistd.h"
#include
"fcntl.h"
#include
"string.h"
intmain
(int argc,
char
*ar**)
;int rd_ret =0;
if(argc <3)
rd_fd =
open
(ar**[1]
,o_rdonly);if
(rd_fd <0)
printf
("open src file %s success, rd_fd = %d\n"
,ar**[1]
,rd_fd)
; wr_fd =
open
(ar**[2]
,o_wronly|o_creat,
0600);
//不存在就建立,許可權0600
if(wr_fd <0)
printf
("open dst file %s success, wr_fd = %d\n"
,ar**[2]
,wr_fd)
;while(1
)write
(wr_fd,read_buf,rd_ret)
;memset
(read_buf,0,
128);}
write
(wr_fd,read_buf,rd_ret)
;close
(rd_fd)
;close
(wr_fd)
;return0;
}
標準io是"stdio.h"定義的一系列函式,也有關於檔案的io函式,優勢是移植性比檔案io好。
fopen()與open()類似
file * fopen(const char * path,const char * mode);
返回引數是file指標,null表示失敗
第乙個引數path是檔名
第二個引數mode是讀寫規則
mode含義r
唯讀w只寫(覆蓋),不存在就建立
w+讀寫(覆蓋),不存在就建立
a只寫(追加),不存在就建立
a+讀寫(追加),不存在就建立
(b)對應的二進位制檔案,例如wb+表示二進位制讀寫覆蓋
······
類似close()
int fclose(file *stream)
返回值0表示成功,-1表示失敗
引數stream是開啟的file指標
類似read(),但是順序有變
size_t fread(void *buffer, size_t size, size_t count, file *stream);
返回值是讀取的長度,-1表示失敗
buffer:是讀取到的快取位置,資料去向
size:是讀取的大小
count:表示資料個數,一般用1
stream:是fopen()返回的指標
類似write(),順序有變
size_t fwrite(const void* buffer, size_t size, size_t count, file* stream);
其中的注釋是和上乙個程式的差異
#include
"stdio.h"
#include
"unistd.h"
#include
"fcntl.h"
#include
"string.h"
intmain
(int argc,
char
*ar**)
;int rd_ret =0;
if(argc <3)
//rd_fd = open(ar**[1],o_rdonly);
rd_fd =
fopen
(ar**[1]
,"r");
//if(rd_fd < 0)
printf
("open src file %s success, rd_fd = %d\n"
,ar**[1]
,rd_fd)
;//wr_fd = open(ar**[2],o_wronly|o_creat,0600);
wr_fd =
fopen
(ar**[2]
,"w");
//if(wr_fd < 0)
printf
("open dst file %s success, wr_fd = %d\n"
,ar**[2]
,wr_fd)
;while(1
)//write(wr_fd,read_buf,rd_ret);
fwrite
(read_buf,
1,rd_ret,wr_fd)
;memset
(read_buf,0,
128);}
//write(wr_fd,read_buf,rd_ret);
fwrite
(read_buf,
1,rd_ret,wr_fd)
;fclose
(rd_fd)
;fclose
(wr_fd)
;close
(rd_fd)
;close
(wr_fd)
;return0;
}
暫時就這樣 嵌入式學習(二) 嵌入式系統C 語言
1 從 cpu 復位時的指定位址開始執行 2 跳轉至彙編 startup 處執行 3 跳轉至使用者主程式 main 執行,在 main 中完成 a.初試化各硬體裝置 b.初始化各軟體模組 c.進入死迴圈 無限迴圈 d呼叫各模組的處理函式 下面是幾個 著名 的死迴圈 1 作業系統是死迴圈 2 win3...
嵌入式 檔案IO的學習
用 實現linux中cp複製的功能 include stdio.h include unistd.h include fcntl.h include string.h intmain int argc,char ar int argc是記錄你在命令列敲入的字串個數,char ar 是存放你寫入是字串...
嵌入式開發培訓學哪些?嵌入式培訓課程靠譜嗎
嵌入式系統可以說是當前熱門 有發展前景的it應用領域之一,包括手機 電子字典 可視 數字相機 數字攝像機 機頂盒 智慧型玩具醫療儀器和航空航天裝置等都是典型的嵌入式系統,國內的嵌入式人才極度匱乏,據權威部門統計,我國目前嵌入式軟體人才缺口每年都在50萬人左右。該職業一直處於供不應求的狀態,所以嵌入式...