1. 程式人生 > >Linux高階程式設計基礎——檔案系統程式設計之檔案寫入操作

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位先放在那裡,為了後面寫入小寫字母
*/