檔案程式設計 write和複製操作

2021-08-05 21:42:18 字數 1718 閱讀 1659

1、write(寫)系統呼叫向開啟的檔案寫資料,顧名思義往檔案寫東西,這裡也是需要緩衝區,獲取你要寫的東西到緩衝區,再從緩衝區寫入到檔案當中;這裡write往檔案寫資料是通過二進位制的形式寫的;

(1)、write()格式:

#include 

ssize_t write(int fd, const

void *buf, size_t count);

各引數及返回值的含義如下:

fd:要寫入的檔案的描述符。

buf:要寫入的資料所存放的緩衝區。

count:要寫入的位元組數。

返回值:若成功返回已寫的位元組數,出錯則返回-1並設定變數errno的值

(2)、使用write()時,可能遇到哪些情況?

返回值等於count

返回乙個大於0小於count的值

阻塞 返回-1且errno的值為eintr

返回-1且errno的值為eagain

返回-1且errno的值為ebadf

返回-1且errno的值為efault

返回-1且errno的值為epipe

返回的count是實際寫入檔案的位元組數,其他的errno這些引數可以找man write(linux man手冊),來看是什麼錯誤,這裡就不說了;

(3)、例子:

//這些標頭檔案可以直接通過man來找;

#include

#include

#include

#include

#include

#include

#define size 1024

int main()

char buf[size] = ;

while (1)

printf ("要寫的位元組數 :%d, 實際寫的位元組數: %d\n", size, ret);

}close(fd);

return

0;}

2、檔案的複製:

(1)、思想:複製就是read()和write()的兩個過程,把1檔案的內容讀到緩衝區,在把緩衝區的內容寫到2檔案中;

檔案1——>先讀到——>buf

buf——–>再寫到——->檔案2

(2)、例子

//把檔案1 當中的ppt複製到檔案2中

#include 

#include

#include

#include

#include

#include

#define size 1024

int main()

//開啟要寫進去的檔案;

int fd2 = open("2.ppt", o_rdonly);

if (fd2 == -1)

int ret = 0;

char buf[size] = ;

//讀到緩衝區,在從緩衝區寫到fd2;

while (ret = read(fd1,buf,size))

write(fd2,buf,ret);//讀到ret 個位元組,所以不用擔心會讀到前一次buf中的內容

}

printf("檔案複製完成\n");

close(fd1);

close(fd2);

return

0;}

IO檔案操作函式read 和write

函式read 和write lseek 和close 的基本使用與試驗,實現檔案的寫入 讀取 移位 關閉 include include include include include include includeint main else printf open file hello.c d n...

Linux檔案程式設計之 系統呼叫 write

1 相關函式說明 函式原型 int write int fd,const void buf,size t count 相關函式 open,read,fcntl,close,lseek,sync,fsync,fwrite 表頭檔案 include 函式說明 從buf所指向的緩衝區中,取出count個位...

檔案操作之複製

l複製檔案可通過file類的 copy 方法來實現 l格式為 string soupath c users administrator desktop sou 125.txt 定義字元資料夾路徑 string detpath c users administrator desktop det 126...