c語言文字檔案操作
C語言檔案操作模式:
1) 檔案使用方式由r,w,a,t,b,+六個字元拼成,各字元的含義是:
r(read): 讀
w(write): 寫
a(append): 追加
t(text): 文字檔案,可省略不寫
b(banary): 二進位制檔案
+: 讀和寫
2) 凡用“r”開啟一個檔案時,該檔案必須已經存在,且只能從該檔案讀出。
3) 用“w”開啟的檔案只能向該檔案寫入。若開啟的檔案不存在,則以指定的檔名建立該檔案,
若開啟的檔案已經存在,則將該檔案刪去,重建一個新檔案。
4) a 開啟只寫檔案,如果檔案不存在,建立檔案, 寫入追加
5) 在開啟一個檔案時,如果出錯,fopen將返回一個空指標值NULL。在程式中可以用這一資訊來判
別是否完成開啟檔案的工作,並作相應的處理
==========================================================
1.逐行寫入程式碼fputs
// 逐行寫入程式碼fputs
int main(int argc, char *argv[])
{
const char ch[1024]="xiaoming\n";
const char ch1[1024]="小黑\n";
const char ch2[1024]="小鄧\n";
FILE* p= fopen("D://temp//a.txt","w");
fputs(ch,p);
fputs (ch1,p);
fputs(ch2,p);
fclose(p);
printf("%s\n",ch);
}
2.逐行讀取程式碼feof、fgets
int main(int argc, char *argv[])
{
char ch[1024] = { 0 };
FILE* p = fopen(“D://temp//a.txt”, “r”);
while (!feof(p)){//如果沒有到檔案結尾,那麼就一直迴圈
memset(ch, 0, sizeof(ch));
fgets(ch, sizeof(ch), p);
printf(“%s”, ch);
}
fclose(p);
system(“pause”);
}
**3. 逐行讀取字串加密、字串解密**
void code(char *s)
{
while (*s)//遍歷一個字串
{
(*s)++; // 檔案的 加密,為每一個字串都加1
s++;
}
}
void decode(char *s)
{
while (*s)//遍歷一個字串
{
(*s)--;
s++;
}
}
int main03()
{
char s[1024] = { 0 };
FILE *p = fopen("D:\\temp\\a.txt", "r");//用讀的方式開啟一個檔案
FILE *p1 = fopen("D:\\temp\\b.txt", "w");//用寫的方式開啟一個檔案
//feof(p);//如果已經到了檔案結尾,函式返回真
while (!feof(p))//如果沒有到檔案結尾,那麼就一直迴圈
{
memset(s, 0, sizeof(s));
fgets(s, sizeof(s), p);//第一個引數是一個記憶體地址,第二個引數是這塊記憶體的大小,第三個引數是fopen返回的檔案指標
code(s);//
fputs(s, p1);
}
fclose(p);
fclose(p1);
return 0;
}
int main04()
{
char s[1024] = { 0 };
FILE *p = fopen("D:\\temp\\b.txt", "r");//用讀的方式開啟一個檔案
FILE *p1 = fopen("D:\\temp\\c.txt", "w");//用寫的方式開啟一個檔案
//feof(p);//如果已經到了檔案結尾,函式返回真
while (!feof(p))//如果沒有到檔案結尾,那麼就一直迴圈
{
memset(s, 0, sizeof(s));
fgets(s, sizeof(s), p);//第一個引數是一個記憶體地址,第二個引數是這塊記憶體的大小,第三個引數是fopen返回的檔案指標
decode(s);//
fputs(s, p1);
}
fclose(p);
fclose(p1);
return 0;
}
4.逐位元組讀取: getc, 中文亂碼
int main05(){
FILE *p = fopen("D:\\temp\\a.txt", "r");//用讀的方式開啟一個檔案
char c = 0;
while ((c=fgetc(p)) != EOF){ //EOF代表檔案最後的一個結束標示
printf("%c\n", c);
}
fclose(p);
system("pause");
return 0;
}
// 逐位元組寫入: putc
int main06(){
FILE *p = fopen("D:\\temp\\a.txt", "w");//用讀的方式開啟一個檔案
if (p == NULL)
{
printf("error\n");
}
else
{
putc('a', p);
putc('b', p);
putc('c', p);
fclose(p);
}
system("pause");
}