int chmod(*char,int ):系統呼叫修改檔案訪問許可權屬性函式
s_isuid 04000 檔案的(set user-id on execution)位
s_isgid 02000 檔案的(set group-id on execution)位
s_isvtx 01000 檔案的sticky位
s_irusr(s_iread) 00400 檔案所有者具可讀取許可權
s_iwusr(s_iwrite)00200 檔案所有者具可寫入許可權
s_ixusr(s_iexec) 00100 檔案所有者具可執行許可權
s_irgrp 00040 使用者組具可讀取許可權
s_iwgrp 00020 使用者組具可寫入許可權
s_ixgrp 00010 使用者組具可執行許可權
s_iroth 00004 其他使用者具可讀取許可權
s_iwoth 00002 其他使用者具可寫入許可權
s_ixoth 00001 其他使用者具可執行許可權
open,close,read,write,lseek等函式
#include< stdio.h>
#include< sys/types.h>//read open ...等
#include< sys/stat.h>
#include< fcntl.h>
#include< unistd.h>//lseek
#include< errno.h>//errno全域性變數
int main()
write(p1,&a,sizeof(a));//寫函式,返回值為寫入的位元組數
len=lseek(p1,0,seek_end);//lseek,返回值為移動後指標距離檔案開頭的位元組數
printf("%d ",len);//(把檔案已到尾返回值賦給len就可以知道檔案的長度)
printf("%d ",lseek(p1,0,seek_set));//將指標移動到開頭
printf("%d ",read(p1,b,len));//返回值為讀取的位元組數(已經知道前面檔案長度了,用這個讀一次就好)
/*if(read(p1,b,len)!=len)//如果讀的長度和返回值不一樣就說名讀錯了
*/printf("%s \n",b);//輸出一次檔案裡讀的東西
lseek(p1,10,seek_end);//這裡就有點奇怪了 檔案指標移動到結尾的後面十個位元組,這時相當與給檔案變長了,末尾加了十個『\0』,
write(p1,&a,sizeof(a));//又寫入了了一次(這是在在檔案末尾新增了一次,即十個『\0'之後)
len=lseek(p1,0,seek_end);//再次看一下長度,以及下面的對比一下
printf("%d ",len);
printf("%d ",lseek(p1,0,seek_set));
printf("%d ",read(p1,b,len));
printf("%s ",b);
close(p1);
return
0;}
程式執行第一次結果:
6 0 6 gjldw(注意函式們的返回值)
22 0 22 gjldw(前後對比看出檔案指標移動到結尾的後面的方式)
程式結束後我們用od命令開啟檔案看看裡面的東西
gjln@gjldw:~/gjl/練習/練習$ od -c sdfd.txt
0000000 g j l d w \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0(這裡我們發現加了十個』\0』)
0000020 g j l d w \0
0000026
此外open 的一些開啟方式的引數我就不寫了...
最後記一點巨集跟蹤除錯
ansi標準說明了五個預定義的巨集名。它們是:
_ _ line_ _
_ _ file_ _(友情提示他們都是左右雙下劃線)
_ _ date_ _
_ _ time_ _
_ _ stdc_ _
_ _ file _ _ 是內建巨集 代表原始檔的檔名
_ _ line _ _ 是內建巨集,代表該行**的所在行號
_ _ date_ _巨集指令含有形式為月/日/年的串,表示原始檔被翻譯到**時的日期。
_ _ time_ _巨集指令含有形式為時:分:秒的串,表示原始檔被翻譯到**時的時間。
如果實現是標準的,則巨集stdc含有十進位制常量1。如果它含有任何其它數,則實現是非標準的。
檔案輸入 輸出
13.1 和檔案進行通訊 文字檢視和二進位制檢視 在文字檢視中,程式看到的內容和二進位制的內容可能不同,例如ms dos文字檔案用回車符和換行符的組合 r n來表示行尾,macintosh用乙個回車符 r來表示行尾。c程式使用乙個 n表示行尾。所以,如果c程式以文字檢視模式處理乙個ms dos文字檔...
檔案輸入輸出
檔案的兩種檢視 文字和二進位制。有的時候同乙個檔案以不同的檢視進行檢視,顯示是不同的,主要是控制字元 回車,換行 的不同。printf 是將各種型別轉換為適合的終端字元。所以打算將乙個結構體送入檔案的話不能用printf這一類函式。二進位制形式儲存,中間沒有從數字到字串形式的轉化。對於標準io,fr...
檔案輸入輸出
當我們求解acm題目時,通常在設計好演算法和程式後,要在除錯環境 例如vc等 中執行程式,輸入測試資料,當能得到正確執行結果後,才將程式提交到oj中。但由於除錯往往不能一次成功,每次執行時,都要重新輸入一遍測試資料,對於有大量輸入資料的題目,輸入資料需要花費大量時間。使用freopen函式可以解決測...