linux c 文件 read(讀) 和 write (寫) 代碼分析
read code:
[root@luozhonghua 03]# cat ex03-read-01.c
/*文件ex03-open-03.c,O_CREAT和O_EXCL的使用*/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
int main(void)
{
int fd = -1,i;
ssize_t size = -1;
/*存放數據的緩衝區*/
char buf[10];
char filename[] = "test.txt";
/*打開文件,如果文件不存在,則報錯*/
fd = open(filename,O_RDONLY);
if(-1 == fd){
/*文件已經存在*/
printf("Open file %s failure,fd:%d\n",filename,fd);
} else {
/*文件不存在,創建並打開*/
printf("Open file %s success,fd:%d\n",filename,fd);
}
/*循環讀取數據,直到文件末尾或者出錯*/
while(size){
/*每次讀取10個字節數據*/
size = read(fd, buf,10);
if( -1 == size) {
/*讀取數據出錯*/
close(fd);/*關閉文件*/
printf("read file error occurs\n");
/*返回*/
return -1;
}else{
/*讀取數據成功*/
if(size >0 ){
/*獲得size個字節數據*/
printf("read %d bytes:",size);
/*打印引號*/
printf("\"");
/*將讀取的數據打印出來*/
for(i = 0;i<size;i++){
printf("%c",*(buf+i));
}
/*打印引號並換行*/
printf("\"\n");
}else{
printf("reach the end of file\n");
}
}
}
return 0;
}
[root@luozhonghua 03]# ./ex03-read-01
Open file test.txt success,fd:3
read 10 bytes:"aaaaaaaaaa"
read 10 bytes:"aaaaaaaaaa"
read 10 bytes:"aaaaaaaaaa"
read 5 bytes:"aaaa
"
reach the end of file
-----write
[root@luozhonghua 03]# cat ex03-write-01.c
/*文件ex03-write-01.c,
O_CREAT和O_EXCL的使用*/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
int main(void)
{
int fd = -1,i;
ssize_t size = -1;
int input = 0;
/*存放數據的緩衝區*/
char buf[]="quick brown fox jumps over the lazy dog";
char filename[] = "test.txt";
/*打開文件,如果文件不存在,則報錯*/
fd = open(filename,O_RDWR|O_TRUNC);
if(-1 == fd){
/*文件已經存在*/
printf("Open file %s failure,fd:%d\n",filename,fd);
} else {
/*文件不存在,創建並打開*/
printf("Open file %s success,fd:%d\n",filename,fd);
}
/*將數據寫入到文件test.txt中*/
size = write(fd, buf,strlen(buf));
printf("write %d bytes to file %s\n",size,filename);
/*關閉文件*/
close(fd);
return 0;
}
[root@luozhonghua 03]# cat text.txt
cat: text.txt: No such file or directory
[root@luozhonghua 03]# cat test.txt
quick brown fox jumps over the lazy dog
最後更新:2017-04-03 05:39:41