檔案操作
不論操作什麼型別的檔案,第一步先開啟乙個檔案,第二步,讀寫檔案,第三步關閉檔案。
fopen
r 以唯讀方式開啟檔案,該檔案必須存在。
r+ 以可讀寫方式開啟檔案,該檔案必須存在。用r+寫檔案時候,從檔案開始位置寫入
rb+ 讀寫開啟乙個二進位制檔案,允許讀寫資料,檔案必須存在。
rw+ 讀寫開啟乙個文字檔案,允許讀和寫。
w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。
wb w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。
a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。(eof符保留),如果檔案不存在,a的行為和w是一樣的
a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。 (原來的eof符不保留)
「b」只對windows有效,對於unix來講是無效,
二進位制和文字模式的區別
在windows系統中,文字模式下,檔案以」\r\n」代表換行。若以文字模式開啟檔案,並用fputs等函式寫入換行符」\n」時,函式會自動在」\n」前面加上」\r」。即實際寫入檔案的是」\r\n」 。
在類unix/linux系統中文字模式下,檔案以」\n」代表換行。所以linux系統中在文字模式和二進位制模式下並無區別。
對於gbk編碼的漢字,乙個漢字兩個位元組,對於utf8來講乙個漢字3個位元組,但如果英文本母都是乙個位元組
fclose
fclose關閉fopen開啟的檔案
getc和putc函式
int main()
fclose(fp);
return0;}
int main()
fclose(fp);
return
0;}
eof與feof函式檔案結尾
程式怎麼才能知道是否已經到達檔案結尾了呢?eof代表檔案結尾
如果已經是檔案尾,feof函式返回true。
fprintf,fscanf,fgets,fputs函式
這些函式都是通過file *來對檔案進行讀寫。
fscanf不會讀取行尾的』\n』,fgets 會將行尾的』\n』讀取到buf裡面
不論fprintf還是fputs都不會自動向行尾新增\n,需要**中往buf的行尾寫\n才可以達到換行的目錄
stat函式
#include
函式的第乙個引數代表檔名,第二個引數是struct stat結構。
得到檔案的屬性,包括檔案建立時間,檔案大小等資訊。
**示例
// 讀檔案.
int main()
else
printf("\n");
}fclose(p);
return0;}
// 寫檔案.
int main()
else
printf("\n");
}fclose(p);
fclose(p2);
return0;}
// 封裝檔案的加密.
void code(const
char *src, const
char *dest)
else
printf("\n");
}fclose(p);
fclose(p2);
}// 封裝檔案的解密.
void decode(const
char *src, const
char *dest)
else
printf("\n");
}fclose(p);
fclose(p2);
}int main()
int main()
; // 判斷檔案是否已經到末尾.
while (!feof(p1))
fclose(p1);
fclose(p2);
return0;}
sprintf(buf, "%s%d\n", "hello", 250); // 和printf是一樣的,將目標輸出到字串
fprintf(p, "%s", buf) // 將字串輸出到檔案.
fscanf(p, "%s", buf) // 讀取檔案到字串buf,如果一行中有空格,那麼空格之後就讀到下一行
// udp檔案傳遞.
#include
#include
#include
#include // 得到檔案資訊.
#include "myudp.h"
int main(argv, char *args)
// 進行檔案傳送.
if (atoi(args[3]) == 1) ;
memset(tmp, 0, sizeof(tmp));
// 讀取檔案資訊.
fgets(tmp, sizeof(tmp), p1);
strcat(buf, tmp);
}send_socket("127.0.0.1", 8080, buf, sizeof(buf));
// 傳送檔案結束標識.
char c = eof;
send_socket("127.0.0.1", 8080, &c, sizeof(c));
free(buf);
// **優化----end.
char buf1[1024] = ;
while (!feof(p1))
// 傳送檔案結束標識.
char c = eof;
send_socket("127.0.0.1", 8080, &c, sizeof(c));
fclose(p1);
} else
if (atoi(args[3]) == 2) ;
char ip[100] = ;
while (1)
printf("%s", buf2);}}
return
0;}
檔案操作1
ios 沙盒中一共有 4個資料夾 安裝目錄 home 唯讀 documents 長期放使用者檔案或資料夾,rw tmp 存放臨時檔案,rw library caches 存放快取檔案,rw nsarray nssearchpathfordirectoriesindomains nssearchpat...
檔案操作(1)
判斷檔案型別 var dump filetype img 返回檔案型別,目錄或檔案 var dump is dir img 11.png 判斷給的檔案是不是目錄 is file 判斷給的檔案是不是檔案 檔案屬性 var dump date y m d h i s fileatime img 11.p...
檔案操作1
檔案 檔案和資料夾 目錄 判斷檔案型別 1.獲取檔案型別 var dump filetype two.txt 判斷檔案型別,如果是檔案返回file var dump filetype one 如果是目錄,返回dir 2.判斷是否是目錄 var dump is dir one 布林型,判斷給定路徑是否...