1.開啟檔案
open 返回的是檔案描述符,不帶緩衝
fopen 返回的是file *,帶緩衝
根據引數不同,可以選擇不同的開啟方式,這是檔案操作的第1步
2.讀檔案
read
fread
這2個函式僅僅是按位元組讀取檔案
如果要按一定的規則對檔案讀取,則需要另外的函式
fscanf
例子1:
如果輸入資料的格式是這樣的,第乙個數是資料的個數,後面每一行是一組資料:21
2讀入程式是這樣的:
int n;
int a[n];
fscanf("%d", &n);
for(i = 0; i < n; i++)
在很多情況下,是需要實現按行讀取的,c庫中也有這種函式
fgets
getline
2個函式實現的功能是一樣的,個人感覺getline更好用,因為這個函式會自動申請空間,
另外這2個函式還可以用來檢測是否到了檔案結尾,拿getline來說,如果出錯或者到檔案結尾,
都將返回-1,這個時候只需要用feeor或者feof判斷下就可以了。
例子2:
拿baidu的水果開會時段來說,這個屬於輸入不定長型別
輸入格式
輸入的第一行只有乙個整數n,表示購置水果的組數。接下來的n行表示水果的到達時間、取走時間(時間用1200到1900之間的正整數表示,保證取走時間大於到達時間)。剩下的字串以空格分割每一種水果。如「1400 1600 雪梨水蜜桃」,表示下午兩點到四點(包含兩點和四點這兩個時間點),雪梨和水蜜桃會在前台等待開會。每種水果名稱由不超過十個漢字組成。
輸入樣例1 例
31200 1400 雪梨 檸檬
1300 1400 西瓜 蘋果
1400 1800 花生 水蜜桃
讀取該型別檔案的程式如下:
#include
main()
}if(ret!=-1)
strcat(str,temp);
//讀入一行,**還應當改進,如果str空間不夠,應該繼續申請空間
//printf("ret is %d/n",ret);
//printf("str is%d",*(str+ret-1));
sscanf(str,"%d%d%n",&time1[i],&time2[i],&n);
str+=n;
printf("time is%d%d/n",time1[i],time2[i]);
size_t size=100;
int j=0;
fru[i][j]=(char *)malloc(25);
while(sscanf(str,"%s%n",fru[i][j],&n)==1)
store[i]=j;
}for(i=0;ifree(str);
free(temp);
}
linux下的檔案操作
徹底刪除檔案 rm rf 檔案目錄 可相對可絕對 是徹底刪除而且linux無 站 建立檔案 touch 檔名 建立資料夾 mkdir 資料夾名 檔案提權 chmod 777 filename 記錄在linux下寫乙個python檔案的過程 1.vim filename py 沒有檔案會自行建立,有就...
Linux下的檔案管理1
1.檔案的建立 touch filename touch file1 file2 建立多個檔案 注 touch命令在系統中不僅可以新建檔案,也可以修改檔案的時間戳 時間標識 時間戳的檢視方式 stat filename 時間戳分為 2.目錄的建立 mkdir directory mkdir dir1...
linux下的檔案操作命令
使用gzip命令 1 壓縮 gzip 檔名 會被壓縮成擴充套件名為.gz的檔案 2 解壓縮 gzip d gz 還原成原來的檔案 使用tar命令 只打包並不壓縮 tar cvzf tar.gz 檔名 打包並壓縮 tar zxvf 檔名.tar.gz 呼叫gunzip,對.gz檔案進行解壓縮,然後再解...