Linux高階程式設計基礎——檔案系統程式設計之檔案寫入操作
阿新 • • 發佈:2018-11-10
檔案系統程式設計之檔案寫入操作——實驗題
//編寫程式碼,完成以下功能:
//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位先放在那裡,為了後面寫入小寫字母
*/