Linux高级编程基础——文件系统编程之文件写入操作

文件系统编程之文件写入操作——实验题

//编写代码,完成以下功能:
//1.创建文件file1,写入字符串“abcdefghijklmn”;
//2.创建文件file2,写入字符串“ABCDEFGHIJKLMN”;
//3.读取file1中的内容,写入file2,使file2中的字符串内容为“abcdefghijklmn ABCDEFGHIJKLMN”

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
int main()
{
int fd1,fd2;
fd1 = open ("file1",O_CREAT|O_RDWR,S_IRWXU);  //创建一个名为“file1”的文本文件,
                                                                          //“S_IRWXU”给这个文件可读可写可执行的权限,
                                                                        //“fd1”是创建这个文件成功后程序返回的文件描述符,相当于这个文件的名字
if (fd1 < 0)   //判断创建是否成功
  { 
   perror ("open :");
   printf ("errno is : %d \n",errno);
  }
else 
  printf ("open ok\n");

fd2 = open ("file2",O_CREAT|O_RDWR,S_IRWXU);  //创建一个名为“file2”的文本文件,
                                                                          //“S_IRWXU”给这个文件可读可写可执行的权限,
                                                                        //“fd2”是创建这个文件成功后程序返回的文件描述符,相当于这个文件的名字
if (fd2 < 0)  //判断创建是否成功
  {  
   perror ("open :");
   printf ("errno is : %d \n",errno); 
  }
else 
  printf ("open ok \n");

int fdw1,fdw2;
fdw1 = write (fd1,"abcdefghijklmn",15);  //通过文件描述符"fd1"向文件“file1”中写入一个字符串“abcdefghijklmn”
printf("fdw1:%d\n",fdw1);      //fdw1是write函数的返回值
if (fdw1 != 15)
  {
   perror("write fd1 :"); 
   }
else 
 printf ("write ok \n");

lseek (fd2,16,SEEK_SET); // "lseek"调节读写偏移量,通过这个“SEEK_SET”设置光标调节开始的位置为文件的开头
                                 // “16”就是设置调节的位数为16,就是把光标从文件头往后移动16位,把前面的15位先放在那里,为了后面写入小写字母
                                //《鼠标点在那个位置就会出现一个闪动的竖线,这个就是光标》
char buf[20] = "ABCDEFGHIJKLMN";// 定义一个数组
fdw2 = write (fd2,buf,20);//通过文件描述符"fd2"向文件“file2”中写入数组 buf 中存放的字符串
printf ("fdw2 %d \n",fdw2);
if (fdw2 < 0)    //fdw1是write函数的返回值
  {  
   perror ("write fd2:");
  }
else
printf("write ok \n");

lseek (fd1,0,SEEK_SET);  // "lseek"调节读写偏移量,通过这个“SEEK_SET”设置光标调节开始的位置为文件的开头
lseek (fd2,0,SEEK_SET);  // “0”就是设置调节的位数为0,就是不移动,就是把光标放在文件开头

char re[28];
read (fd1,re,14);//通过文件描述符"fd1" 把 文件“file1”中刚开始写入的那些小写字母写入数组 re 中
write (fd2,re,14);//通过文件描述符"fd2" 向 文件“file2”中写入存放在数组 re 中的内容

close (fd1);
close (fd2);
return 0;
} 

/*
“lseek (fd2,16,SEEK_SET); “// "lseek"调节读写偏移量,通过这个“SEEK_SET”设置光标调节开始的位置为文件的开头
                                                 // “16”就是设置调节的位数为16,就是把光标从文件头往后移动16位,把前面的15位先放在那里,为了后面写入小写字母
*/
 

猜你喜欢

转载自blog.csdn.net/qq_40663274/article/details/83904134