1. 程式人生 > >檔案管理(一)

檔案管理(一)

編寫程式碼,完成以下功能:
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函式內的語句會被終端執行。

程式碼執行結果:

實驗完成。