檔案管理(一)
阿新 • • 發佈:2018-12-03
編寫程式碼,完成以下功能:
1.建立檔案file1,寫入字串“abcdefghijklmn”;
2.建立檔案file2,寫入字串“ABCDEFGHIJKLMN”;
3.讀取file1中的內容,寫入file2,使file2中的字串內容為“abcdefghijklmn ABCDEFGHIJKLMN”
利用Linux進行C程式開發,首先需要了解程式要求,理清思路。
按照要求,我們需要用open建立兩個檔案file1和file2.利用write將字串“abcdefghijklmn”寫入file1中,同理建立file2,將“ABCDEFGHIJKLMN”寫入file2;最後結合lseek函式,將file中的字串讀出,寫入file2;
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/stat.h> #include <sys/types.h> int main() { int fd1,fd2; char str[14]; fd1 = open("file1",O_RDWR|O_CREAT,S_IRWXU); if(fd1 < 0) perror("open"); write(fd1,"abcdefghijklmn",14); lseek(fd1,0,SEEK_SET); fd2 = open("file2",O_RDWR|O_CREAT,S_IRWXU); if(fd2 < 0) perror("open"); lseek(fd2,14,SEEK_END); write(fd2,"ABCDEFGHIJKLMN",14); read(fd1,str,14); lseek(fd2,0,SEEK_SET); write(fd2,str,14); close(fd1); close(fd2); system("cat file2"); printf("\n"); system("rm -f file1 file2"); return 0; }
通過閱讀程式碼我們可以發現,在建立file2之後,我用了lseek函式,並且將偏移量設為14,這樣做的目的是增大file2的檔案大小,否則會產生檔案覆蓋,寫入的小寫字串將大寫字串覆蓋,導致實驗失敗。
利用lseek函式”擴充“檔案時,應格外注意一點:lseek函式”擴充“檔案後,並不能直接使得檔案大小改變,需要在下一個寫操作之後才能使檔案變大。即第23句和第24句的位置不能互換,否則檔案內容會發生覆蓋。
system函式內的語句會被終端執行。
程式碼執行結果:
實驗完成。