一.
關於檔案操作的幾個基本函式
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...