(1)將原始檔複製到另外乙個檔案(將test1.text複製成test2.txt)
[test@linux test]$ .
/mycp /home/test1.txt /usr/test2.txt
(2)將原始檔複製到另外乙個目錄(將test1.txt複製到/tmp目錄)
[test@linux test]$ .
/mycp /home/test1.txt /tmp
原始檔路徑和目標檔案路徑通過命令列引數來指定
引數(字串形式)
cp命令:根據接收的命令列引數進行複製
✓ cp /usr/local/src/main.c /root/main.c(檔案到檔案複製)
✓ cp /usr/local/src/main.c /root (檔案到目錄複製)
✓ cp –r /usr/local/src /root(-r 遞迴複製,用於目錄到目錄的複製)
許可權不夠的情況,採用sudo cp xx xx的方式。
sudo,在linux中輸入sodu就是呼叫這個程式提公升許可權
作業系統啟動c程式-
>呼叫c啟動例程-
>例程獲取命令列引數-
>main函式接收
int main(
int argc, char* ar**)
argc:整型,輸入引數個數
ar**:字串陣列,儲存命令列引數
root@ubuntu:/root# ./pg i am new
ar**[1]
:iar**[2]
:amar**[3]
:new
#include
int main(
int argc ,char* ar**)
return0;
}將左邊**編譯為hello.o
命令列中執行兩種命令:
->可執行檔名;
ar**[1]
-ar**[5]
->命令列引數
以字串的形式傳遞(空格作為命令列引數之間的分隔)
標頭檔案: fcntl.h
函式: int
open
( const char *pathname,
int oflag, …)
;作用: 開啟或者建立乙個檔案,返回值是開啟檔案的檔案描述符
pathname:檔案的路徑
oflag:開啟檔案的方式
…:變參建立新檔案時使用
oflag值 含義
o_rdonly 唯讀開啟
o_wronly 只寫開啟
o_rdwr 讀、寫開啟
oflag值 含義
o_creat 若此檔案不存在則建立它,此時需要第三個引數mode,
該引數約定了所建立檔案的許可權,計算方法mode&
~umask
o_excl 如同時指定了o_creat,此指令會檢查檔案是否存在,
若不存在則建立此檔案;若檔案存在,此時將出錯
o_trunc 如果此檔案存在,並以讀寫或只寫開啟,則檔案長度0
標頭檔案: unistd.h
函式: ssize_t read(
int filedes, void *buf, size_t nbytes)
;作用:從開啟的檔案中讀資料
返回值:
✓ 成功: 返回實際讀取的位元組數(例外情況:讀普通檔案,未到要求的位元組數前
就到達檔案末尾,此時返回位元組數不等於要求位元組數)
✓ 出錯: 返回-
1, 原因: 磁碟滿、許可權問題、超檔案長度限制
注: 讀操作完成後,檔案的當前位置變為之前位置+實際讀取位元組數
標頭檔案: unistd.h
函式: ssize_t write(
int filedes, const void *buf, size_t nbytes)
;作用: 向開啟的檔案中寫資料
返回值:
✓ 成功: 寫入成功返回實際寫入位元組數
✓ 出錯: 返回-
1, 原因: 磁碟滿、許可權問題、超檔案長度限制
注: 寫操作完成後,檔案的當前位置變為之前位置+實際寫入位元組數
標頭檔案: unistd.h
函式: int close(
int filedes)
作用: 關閉開啟的檔案
返回值:
✓ 成功: 返回0
✓ 出錯: 返回-
1注: 關閉後,不能通過該檔案描述符操作該檔案
標頭檔案: unistd.h
函式: off_t lseek(
int filedes, off_t offset,
int whence)
;作用:設定或查詢檔案當前位置
✓每個開啟檔案都有乙個「檔案當前位置」
✓開啟檔案時預設當前位置為檔案頭(0)
✓回憶:讀寫操作完成後檔案的當前位置變為之前位置+實際讀寫位元組數
檔案定位lseek函式的引數whence及offset(offset可正可負)
✓ whence=seek_set, 檔案當前位置=檔案頭+offset(位元組)
✓ whence=seek_cur, 檔案當前位置=檔案當前位置+offset(位元組)
✓ whence=seek_end, 檔案當前位置=檔案尾+offset(位元組)
呼叫posix api會發生錯誤,需要定位產生問題的更具體原因
系統錯誤碼: posix規範定義的記錄系統錯誤的標準碼,
使用方式: 通過全域性變數errorno獲取該錯誤碼,記錄最後一次錯誤
✓ extern errorno
✓ 標頭檔案: errorno.h
(1)將錯誤碼轉換為易讀的錯誤資訊:
函式1: char *strerror(
int errnum)
;標頭檔案: string.h
作用: 將errnum轉換為對應錯誤資訊(字串)
(2)函式2: void perror(const char * msg)
;標頭檔案: stdio.h
作用: 先輸出msg字串,然後輸出當前errorno對應錯誤資訊
#include //引入標頭檔案
extern errno;
//引入變數
int main(
int argc,char *ar**)
編譯為error.o
使用./error.o執行
得到如下結果:
#include //引入標頭檔案
extern errorno;
//引入變數
int main(
int argc, char *ar**)
close(fd_src)
; close(fd_dst)
; free(buf)
;return0;
}參考:https:
11561401
實驗7 檔案
實驗任務1 2 自行實踐完畢 實驗任務3 從文字資料檔案file1.dat中讀入資料,按成績從高到低排序,將排序結果輸出到螢幕上,同時以文字方式存入檔案file3.dat中。include include define n 10 定義乙個結構體型別stu typedef struct student...
實驗7 檔案
實驗任務3 執行程式,觀察到在螢幕上正確輸出了按分數由高到低排序的資訊,唯一不足的事對於漢字的解碼不正確導致輸出的學生姓名成了亂碼。同時,在當前格式下,生成了文字檔案file3.dat 嘗試用記事本程式開啟檔案file3.dat,觀察到裡面的資料資訊是正確的,並且是直觀可讀的 實驗任務4.1 執行程...
實驗3 檔案操作
一 實驗目的與要求 學會使用檔案操作函式實現對檔案開啟 關閉 讀 寫等操作。學會對資料檔案進行簡單的操作。深入理解 c 的輸入輸出的含義及其實現方法。掌握標準輸入輸出流的應用。二 實驗過程 2 用隨機函式根據文字檔案的記錄數量生成乙個隨機數 3 根據這個隨機數,從所讀取的記錄中找到對應的記錄,並輸出...