Linux C 文件與目錄3 文件讀寫


文件讀寫

  文件讀寫是指從文件中讀出信息或將信息寫入到文件中。Linux文件讀取可使用read函數來實現的,文件寫入可使用write函數來實現。在進行文件寫入的操作時,只是在文件的緩沖區中操作,可能沒有立即寫入到文件中。需要使用sync或fsync函數將緩沖區的數據寫入到文件中


 

文件寫操作:

函數write可以把一個字符串寫入到一個已經打開的文件中,這個函數的使用方法如下:

ssize_t  write  (int fd , void *buf , size_t  count);

參數:

  fd:已經打開文件的文件編號。

  buf:需要寫入的字符串。

  count:一個整數型,需要寫入的字符個數。表示需要寫入內容的字節的數目。

返回值:

  如果寫入成功,write函數會返回實際寫入的字節數。發生錯誤時則返回-1,可以用errno來捕獲發生的錯誤。

[Linux@centos-64-min exercise]$ cat write.c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
int main(void)
{
int fd ;
char path[] = "txt1.txt";
char s[]="hello ...";
extern int errno;
fd = open(path , O_WRONLY|O_CREAT|O_TRUNC , 0766);
if(fd != -1)
{
printf("opened file %s .\n" , path);
}
else
{
printf("can't open file %s.\n" , path);                          
printf("errno: %d\n" , errno);                          //打印錯誤編號
printf("ERR : %s\n" , strerror(errno));             //打印錯誤編號對應的信息。
}
write(fd , s , sizeof(s));
close(fd);
printf("Done\n");
return 0;
}

[Linux@centos-64-min exercise]$ ./write
opened file txt1.txt .
Done


讀取文件函數read

函數read可以從一個打開的文件中讀取字符串。

ssize_t  read(int fd , void *buf , size_t  count);

參數:fd:表示已經打開的文件的編號。

   buf:是個空指針,讀取的內容會返回到這個指針指向的字符串。

   count:表示需要讀取的字符的個數。

返回值:返回讀取到字符的個數。如果返回值為0,表示已經達到文件末尾或文件中沒有內容可讀。

 

fd = open(path , O_RDONLY);
if(fd != -1)
{
printf("opened file %s .\n" , path);
}
else
{
printf("can't open file %s.\n" , path);
printf("errno: %d\n" , errno);
printf("ERR : %s\n" , strerror(errno));
}
if((size = read(fd , str , sizeof(str))) < 0)
{
printf("ERR: %s" , strerror(size));                    //如果有錯,通過錯誤編號打印錯誤消息。
}
else
{
printf("%s\n" , str);
printf("%d\n" , size);
}
close(fd);
return 0;
}

result:

  

opened file txt1.txt .
hello ...
10


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com