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)、例子:
2、檔案的複製://這些標頭檔案可以直接通過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;}
(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...