簡單檔案操作 Linux下C 實現

2021-05-27 01:25:35 字數 3367 閱讀 8573

一.

關於檔案操作的幾個基本函式

1.c函式庫中檔案操作函式

(1)fopen

函式原型:file* fopen(char *path, char *mode);

函式說明:

開啟乙個檔案。 

(2)fgetc

函式原型:int fgetc(file *stream);

函式說明:

從檔案中讀取乙個字元。出錯或檔案尾返回

eof。

(3)fputc

函式原型:int fputc(int c, file *stream);

函式說明:

將乙個字元寫入到文字檔案中。

(4)fgets

函式原型:char* fgets(char *s, int size, file *stream);

函式說明:

從檔案中讀取一行字串

(遇回車換行則函式返回

)。如果為檔案尾返回

null。s

表示要儲存讀取到資料的位置,

size為s

的大小。

(5)fputs

函式原型:int fputs(char *s, file *stream);

函式說明:

將一行字串寫入到檔案中。

(6)fprintf

函式原型:fsprintf(file *stream, const char *format, ...);

函式說明:

格式化字串到檔案中。

(7)fread

函式原型:size_t fread(void *ptr, size_t size, size_t nmemb, file *stream);

函式說明:

按每多少個位元組讀取檔案。

ptr表示資料緩衝區,

size

表示每次讀取的位元組數,

nmemb

表示讀取的次數,函式返回讀取成功的次數,遇

eof結束讀取返回0.

(8)fwrite

函式原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb, file *stream);

函式說明:

按每多少個位元組將資料寫入到檔案中。

ptr表示資料緩衝區,

size

表示每次寫入的位元組數,

nmemb

表示寫入的次數。

(9)fseek

函式原型:int fseek(file *stream, long offset, int whence);

函式說明:

移動檔案流的讀寫位置。

whence

的可取值:

seek_set(

檔案頭)

、seek_cur(

檔案當前位置)、

seek_end(

檔案尾).

(10)fclose

函式原型:int fclose(file *stream);

函式說明:

關閉乙個檔案

2.linux函式庫中檔案操作函式

(1)open

函式原型:int open(const char *pathname, int oflag, ...);

函式說明:

開啟乙個檔案。函式返回檔案描述符fd。

(2)read

函式原型:size_t read(int fd, void *buf, size_t nbytes);

函式說明:

按指定位元組大小讀取檔案。如果函式執行成功,

read

返回乙個非負數,表示本次操作實際讀入的位元組數。遇

eof失敗返回

-1.

(3)write

函式原型:size_t write(int fd, void *buf, size_t nbytes);

函式說明:

按指定位元組大小寫入檔案。

(4)lseek

函式原型:off_t lseek(int fd, off_t offset, int whence);

函式說明:

移動檔案讀寫流的位置。

(5)close

函式原型:int close(int fd);

函式說明:

關閉乙個檔案。 二.

檔案拷貝的三種方式

檔案拷貝在以後的很多地方會用到,比如ftp

fgetc

、fputc

、fgets

、fputs

、fprintf

只可以用來讀寫文字檔案,它們讀二進位制檔案會出現亂碼。而

read

、write

、fread

、fwrite

則都可以讀寫。值得注意的是,對文字檔案的處理一般用

fgets

等函式。下面列出檔案拷貝的三種實現方式

(拷貝文字檔案):

#include #include #include #include #include using namespace std;

int main(int argc, char *argv)

int fin = open(argv[1], o_rdonly, 0777);

int fout = open(argv[2], o_wronly|o_creat, 0777);

char buff[1024] = ;

int len = 0;

while((len = read(fin, buff, sizeof(buff))) > 0)

close(fin);

close(fout);

return 0;

}

#include #include using namespace std;

int main(int argc, char *argv)

; while(fgets(buff, sizeof(buff), fp1) != null)

fclose(fp1);

fclose(fp2);

return 0;

}

#include #include using namespace std;

int main(int argc, char *argv)

; int count = 0;

while((count = fread(buff, 1, 1024, fp1)) != 0)

fclose(fp1);

fclose(fp2);

return 0;

}

Linux 檔案I O操作 簡單實現檔案複製

簡單的實現一下檔案的複製操作,直接貼原始碼了,中間也有一些注釋,至於更多的詳細的命令引數,推薦看下這篇部落格,講的很詳細 傳送門 include include include include include include include define maxn 1005 int main int...

Linux下系統呼叫實現檔案操作

系統呼叫 系統呼叫是作業系統提供給使用者程式的一組 特殊 函式介面,使用者通過這組介面獲得作業系統提供的服務 中操作i o的函式,都是針對檔案描述符的。通過檔案描述符可以直接對相應檔案進行操作,如 open close write read ioctl define stdin fileno 0 標...

Linux下C語言的檔案操作

檔案的讀寫 include include include include include include include define buffsize 512 define msg hhhh9999 intmain int main,char ar printf open file return...