文件管理(一)

编写代码,完成以下功能:
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函数内的语句会被终端执行。

代码执行结果:

实验完成。

猜你喜欢

转载自blog.csdn.net/Wangguang_/article/details/84640440